迷你博客

共0篇迷你博客

最新帖子

共29 条帖子

阿发伯(maozefa)在线状态 19小时前

社区头衔:
社区专家 (专家排行榜
社区生日:
2001-05-02 |生日:1953-01-06
所在城市:
中国 湖北 荆州市
技术专长:
编程,统计
开发工具:
兴趣爱好:
个人简介:
1988年统计大专自学毕业,1989年业余学计算机语言,包括C/C++、basic、Pascal及asm,曾为本系统(统计)和本地政府编写过一些应用软件,现“知天命”久矣,在大连休息,平时打游戏、上网、研究下编程,因没压力,均无成就,仅打发余生而已。
所在行业:
所在公司:
 
(仅好友可见)
联系方式:
(仅好友可见)
 
编辑我的资料
人气:
[人气排行榜] 共 71805 人访问 / 查看详细
专家分:
[专家分排行榜] 共 19012 分 / 查看详细
可用分:
[可用分排行榜] 共 13414 分
所获勋章:
个人动态
10月06
  • 阿发伯 和 baoer  成为好友了 17:09
09月25
09月20
  • 阿发伯 和 Riderofghost  成为好友了 10:16
  • 阿发伯 和 easy007  成为好友了 10:16
09月18
  • 阿发伯 和 颜安  成为好友了 17:35
09月16
09月13
09月12
09月11
博客
查看全部

共58 篇文章

留言
查看全部

共 19 条留言

stamf 2008-09-01

你好,上次问的有关矩形的多边形变形问题,如果直接用你说的那个方法没办法解决。 我思考了一下要解决这个问题必须要使用矩阵变换,如果简单的把两个图像变换成菱形然后拼接,看起来非常怪异。 矩阵变换以后还要进行插值,我做了一个变换算法,但是效率很差,不知道你有没有一些比较高效的算法? 我做了一个简单的梯形变形算法,是这样的: 做一个逐列循环,每一列先计算好形变后的长度,在另一个画布中按照形变后的长度和位置画出这一列。(按列形变以后计算插值就比较容易) 这样做效果不错,但是速度很慢,效率低,能不能麻烦你用汇编实现一下呢?

阿发伯 回复于 2008-09-10

既然你已经做了梯形变形算法,所需要的只是一个效率和质量较高的插值过程,我的BLOG文章《GDI+在Delphi的应用 - Photoshop浮雕效果》中有二次线性插值颜色的代码,你可以参照一下,大致流程如下: 1、先用GetExpandData扩展图像边缘,那个Radius用个2就应该行了 2、把你的算法转换为65536倍数的整数,计算出梯形图每个象素点在原图的扩大了65536位置x,y,3、调用GetBilinearColor取得象素颜色,设置在梯形图的当前位置即可

呼呼 2008-07-16

首先感谢你的大作,收益匪浅。现在想请教一个问题,在生成多帧Tiff时,怎么指定它的压缩格式啊。<br />Parameters.Count的值虽然可以指定为&gt;1 ,但Parameter只可以为一个。<br />谢谢!

严卫强 2008-07-14

倒,不能换行。郁闷...

严卫强 2008-07-14

发博,以及各位发博的好友们:&lt;BR&gt;<br />&lt;BR&gt;<br />请教GDI+ 能不能做成类?&lt;BR&gt;<br />我尝试一个简单的处理。&lt;BR&gt;<br />&lt;BR&gt;<br />testgg:TGPGraphics;testpath:TGPGraphicsPath;&lt;BR&gt;<br />&lt;BR&gt;<br />&lt;BR&gt;<br />procedure TBaseGDI.test2;&lt;BR&gt;<br />var a:Integer;pp:array of TGPPoint;&lt;BR&gt;<br />begin&lt;BR&gt;<br />{  SetLength(pp,3);&lt;BR&gt;<br />  for a:=Low(pp) to High(pp) do pp[a]:=MakePoint(Random(600),Random(400));<br />  testpath.AddCurve(PGPPoint(@pp),3);}&lt;BR&gt;<br />  ShowStatus(testpath.Reset);&lt;BR&gt;<br />end;&lt;BR&gt;<br />&lt;BR&gt;<br />procedure TBaseGDI.test3;&lt;BR&gt;<br />var pen:TGPPen;&lt;BR&gt;<br />begin&lt;BR&gt;<br />//  testpath.Reset;&lt;BR&gt;<br />  testpath.SetFillMode(FillModeAlternate);&lt;BR&gt;<br />  testpath.AddLine(10,10,100,100);&lt;BR&gt;<br />  testpath.AddLine(100,100,200,200);&lt;BR&gt;<br />  testpath.AddLine(200,200,200,400);&lt;BR&gt;<br />  pen:=TGPPen.Create($11FF0000,10);&lt;BR&gt;<br />&lt;BR&gt;<br />&lt;BR&gt;<br />  ShowStatus(testgg.DrawPath(pen,testpath));//xxoo&lt;BR&gt;<br />&lt;BR&gt;<br />//  testgg.DrawLine(pen,10,10,100,100);&lt;BR&gt;<br />  pen.Free;&lt;BR&gt;<br />end;&lt;BR&gt;<br />&lt;BR&gt;<br />procedure TBaseGDI.testBegin(ACanvas: TCanvas);&lt;BR&gt;<br />begin&lt;BR&gt;<br />  testgg:=TGPGraphics.Create(ACanvas.Handle);&lt;BR&gt;<br />  testpath:=TGPGraphicsPath.Create;&lt;BR&gt;<br />end;&lt;BR&gt;<br />&lt;BR&gt;<br />procedure TBaseGDI.testEnd;&lt;BR&gt;<br />begin&lt;BR&gt;<br />  testpath.Free;&lt;BR&gt;<br />  testgg.Free;&lt;BR&gt;<br />end;&lt;BR&gt;<br />&lt;BR&gt;<br />很不幸,在xxoo处显示 "GenericError"&lt;BR&gt;<br />难道非要在同一个TEventNotify里才能正确的吗?&lt;BR&gt;<br />&lt;BR&gt;<br />iamduoduo@hotmail.com

严卫强 2008-07-14

发博,以及各位发博的好友们:<br /><br />请教GDI+ 能不能做成类?<br />我尝试一个简单的处理。<br /><br />testgg:TGPGraphics;testpath:TGPGraphicsPath;<br /><br /><br />procedure TBaseGDI.test2;<br />var a:Integer;pp:array of TGPPoint;<br />begin<br />{  SetLength(pp,3);<br />  for a:=Low(pp) to High(pp) do pp[a]:=MakePoint(Random(600),Random(400));<br />  testpath.AddCurve(PGPPoint(@pp),3);}<br />  ShowStatus(testpath.Reset);<br />end;<br /><br />procedure TBaseGDI.test3;<br />var pen:TGPPen;<br />begin<br />//  testpath.Reset;<br />  testpath.SetFillMode(FillModeAlternate);<br />  testpath.AddLine(10,10,100,100);<br />  testpath.AddLine(100,100,200,200);<br />  testpath.AddLine(200,200,200,400);<br />  pen:=TGPPen.Create($11FF0000,10);<br /><br /><br />  ShowStatus(testgg.DrawPath(pen,testpath));//xxoo<br /><br />//  testgg.DrawLine(pen,10,10,100,100);<br />  pen.Free;<br />end;<br /><br />procedure TBaseGDI.testBegin(ACanvas: TCanvas);<br />begin<br />  testgg:=TGPGraphics.Create(ACanvas.Handle);<br />  testpath:=TGPGraphicsPath.Create;<br />end;<br /><br />procedure TBaseGDI.testEnd;<br />begin<br />  testpath.Free;<br />  testgg.Free;<br />end;<br /><br />很不幸,在xxoo处显示 "GenericError"<br />难道非要在同一个TEventNotify里才能正确的吗?<br /><br />iamduoduo@hotmail.com

饭桶超人 2008-06-17

我已经搞定这个问题了,谢谢

饭桶超人 2008-06-13

毛兄,请教一个问题:用GDI+画带ALPHA的ICON时,ALPHA区域全部丢失了,请问你有什么好的办法吗

tplink2008 2008-06-08

我们是老乡,我是沙市区的。<br />请问毛老师.怎样才能让delphi 实现文字描边? <br />现在找到的就两个方法: <br />1.将文字上,下,左,右,左上,右上,左下,右下各位移一个像素形成描边, <br />但是如果位移一旦大于两个像素,就会形成"米"字形. <br />2.扫描每一个像素,发现与字体相同的颜色.然后再扫描这个像素四周,如果有背景色<br /><br />就进行填充.但是这种效率非常的慢. <br />因为我写的这个程序要生成几千张图片,所以这个效率肯定是不行的. <br />有没什么好方法?要用到GDI+吗?<br />我的QQ:7066431<br />email:  tplink@126.com

2008-06-06

好啊

真实 2008-06-01

你好,以前曾向您请教过一个问题,地址是<br/>http://topic.csdn.net/u/20070807/20/cd8dd5a4-270d-4931-ba5d-a9169ac2b136.html<br/>现在还是这个问题,再次向您请教<br/>问题是:如何得到这个数组中最大和最小的前两个值,并分别放到4个edit中

阿发伯 回复于 2008-06-03

因为是对象数组,不可能很大,可建立一个临时数组,用插入排序法将原数组排序到临时数组,取头和尾对象的值各2个即可。