T tttt_tttt Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-19 #1 混凝土材料是由一些不规则的三角形和黑点组成,互相没有重叠
T tttt_tttt Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-19 #3 我知道可以给Brush设位图,但Brush的位图非常小,一般都用于规则填充的,但混凝土的位图为一种不规则的位图,还请想办法,谢谢
酷 酷尔贝塔 Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-19 #4 [red]图形嘛,正下不行.呵呵,那就听课吧! UP一下吧.[/red]
吕 吕雪松 Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #5 我不知道你说的"不规则"是有多不规则,但是应该有规律的吧?能否Copy一分图片给我? 不然你得自己写填充算法.
T tttt_tttt Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #6 to 吕雪松:多次在论坛上看到你的名字,知道你是一个热心人,十分感谢! 不过我还不知道你的邮箱是多少?我已将图片做好。其实该填充问题可能也是采用改变 画刷的Bitbmp,因为在AutoCAD中实现时首先是选填充的样式,然后设定填充比例, 选择填充的物体或边界,OK即可。
to 吕雪松:多次在论坛上看到你的名字,知道你是一个热心人,十分感谢! 不过我还不知道你的邮箱是多少?我已将图片做好。其实该填充问题可能也是采用改变 画刷的Bitbmp,因为在AutoCAD中实现时首先是选填充的样式,然后设定填充比例, 选择填充的物体或边界,OK即可。
T tttt_tttt Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-20 #7 My email: taozhong1@263.net
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-21 #10 你可以先创建一个混凝土材料的位图,然后用API函数CreatePatternBrush()用该位图创建一个画刷啊! 感觉有点像3D游戏的贴图方法 ^_^
吕 吕雪松 Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-25 #13 tttt_tttt 我收到你的图片了,其实你只要仔细看看,还是可以发现该图片是有规律的,也就是说,还 是由“运算子”图片构成的。 我自己用“画笔”画了一个混凝土样子的(很多三角形,小方块等,比你给我的还要好看) 400*400的图片,注意要设置为“黑白”,然后在Delphi中调用Brush.Bitmap := ... 效果很好的。 并且,我发现400*400并不是上限,还可以再大一些。
tttt_tttt 我收到你的图片了,其实你只要仔细看看,还是可以发现该图片是有规律的,也就是说,还 是由“运算子”图片构成的。 我自己用“画笔”画了一个混凝土样子的(很多三角形,小方块等,比你给我的还要好看) 400*400的图片,注意要设置为“黑白”,然后在Delphi中调用Brush.Bitmap := ... 效果很好的。 并且,我发现400*400并不是上限,还可以再大一些。
T tttt_tttt Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-25 #14 to 吕雪松: 能不能将你的图片及编的程序发给我参考一下,一定加分,十分感谢! taozhong@fzu.edu.cn
吕 吕雪松 Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-25 #15 //很简单的,图片已经发给你了。 procedure TForm1.Button1Click(Sender: TObject); var BMP : TBitMap; begin BMP := TBitmap.Create; BMP.LoadFromFile('c:/1.bmp'); Canvas.Brush.Bitmap := BMP; Canvas.Polygon([Point(10, 10), Point(300, 10), Point(430, 30), Point(240, 120)]); BMP.Free; end;
//很简单的,图片已经发给你了。 procedure TForm1.Button1Click(Sender: TObject); var BMP : TBitMap; begin BMP := TBitmap.Create; BMP.LoadFromFile('c:/1.bmp'); Canvas.Brush.Bitmap := BMP; Canvas.Polygon([Point(10, 10), Point(300, 10), Point(430, 30), Point(240, 120)]); BMP.Free; end;
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-25 #16 TO 吕雪松老师: 我觉得用LoadBitmap()读取作为画刷的图片,然后用CreatePatternBrush()将其作为画刷输出更好! 另不知用StretchDIBits()如何???
T tttt_tttt Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-26 #17 to 吕雪松: 谢谢你的图片,不过我用你贴出来的程序段绘出的Polygon没有进行任何填充,而 用Form1.Canvas.FillRect()是有填充效果的,另外,请问一下,在填充时能否设定比例,也就是说 能否将图片放大或缩小后再填充,还有,能不能达到平铺的效果,也就是说当我的图片尺寸不够时 自动进行平铺?
to 吕雪松: 谢谢你的图片,不过我用你贴出来的程序段绘出的Polygon没有进行任何填充,而 用Form1.Canvas.FillRect()是有填充效果的,另外,请问一下,在填充时能否设定比例,也就是说 能否将图片放大或缩小后再填充,还有,能不能达到平铺的效果,也就是说当我的图片尺寸不够时 自动进行平铺?
T tttt_tttt Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-26 #18 对了,好像Polygon填充时的图片只能用到8*8像素的小图片,对于大于8*8像素,只用上面8*8像素 我又作了一个8*8像素的小图片, 是有填充效果的,且自动平铺 但对于吕雪松老师做的图片,怎么来填充?
对了,好像Polygon填充时的图片只能用到8*8像素的小图片,对于大于8*8像素,只用上面8*8像素 我又作了一个8*8像素的小图片, 是有填充效果的,且自动平铺 但对于吕雪松老师做的图片,怎么来填充?
吕 吕雪松 Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-26 #19 to 很多t 不会吧,我就是用这段代码来显示的,有填充,很好的效果。
T tttt_tttt Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-26 #20 to 吕雪松: 那就很奇怪了,我用的是D5,查TCanvas.Bitmap是申明了8*8像素要求的,不知 你是不是用D6,如果不是请帮我查一下TCanvas.Bitmap的用法,谢谢。