盒子资源分类
解决 MIDForm 背景绘图的非常简单的方法
关键字:MIDForm Canvas 背景 绘图 背绘图
来 自:原创
平 台:Win9x,Win2k/XP/NT,Win2003
下载所需:0 火柴
深浅度:初级
完成时间:2006/6/28
发布者:corbie8205
发布时间:2006/6/28
编辑器:DELPHI7
语 种:简体中文
分 类:绘图
下载浏览:2/12119
看到很多朋友在找如何在 MDI 或者普通 Form 绘制背景图象的方法,我就写了一个绘图函数,可以方便的解决这个问题,大家可以参考并举一反三,改进的更好。 当然里面只是使用了 Form 的 Canvas 来绘图,如果使用 BitBlt 可能更快,但是在这里应该察觉不出来,大家可以尝试使用 BitBlt 和 StretchBlt 来改写。 TDrawMode 用来控制绘图的方法: dwCenter, 居中绘图 dwStretch, 拉伸绘图 dwTile, 平铺绘图 使用的时候只要把下面的函数声明写入单元,或是把下面的代码保存成单元,直接引用都可以。 然后声明一个位图变量,在 OnCreate 里面写: var MyBitmap: TBitmap; begin MyBitmap := TBitmap.Create; MyBitmap.LoadFromFile('此处写入要绘制的背景图象'); { 背景图要位图格式,其他的格式大家可以通过变量转换,也很简单。 } end; 在 OnPaint 里面写: begin DrawFormImage(Self, MyBitmap, dwTile); { 这个函数的第三个参数可以不写,默认为dwCenter } end; 在 OnDestory 里面写: begin MyBitmap.Free; { 这里释放用过的位图变量 } end; 下面是完全的单元代码: unit BackImage; interface uses Forms, Graphics; type TDrawMode = (dwCenter, dwStretch, dwTile); procedure DrawFormImage(Form: TForm; Bitmap: TBitmap; DrawMode: TDrawMode = dwCenter); implementation procedure DrawFormImage(Form: TForm; Bitmap: TBitmap; DrawMode: TDrawMode = dwCenter); var X, Y: Integer; begin case DrawMode of dwCenter: begin X := (Form.ClientWidth - Bitmap.Width) div 2; Y := (Form.ClientHeight - Bitmap.Height) div 2; Form.Canvas.Draw(X, Y, Bitmap); end; dwStretch: begin Form.Canvas.StretchDraw(Form.ClientRect, Bitmap); end; dwTile: begin Form.Canvas.Brush.Bitmap := Bitmap; Form.Canvas.FillRect(Form.ClientRect); end; end; end; end.
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们 !
相关文章
相关评论
共有评论5条
当前显示最后5条评论
chl_csdn
2006/6/28 23:14:12
"当然里面只是使用了 Form 的 Canvas 来绘图,如果使用 BitBlt 可能更快,但是在这里应该察觉不出来,大家可以尝试使用 BitBlt 和 StretchBlt 来改写。" 什么是bitblt啊?delphi6中我找不到的,可以详细解释一下吗?
kinneng
2006/6/28 23:47:41
bitblt 是Windows系统一个绘图函数,即系统API
goodpb
2006/6/29 8:45:27
好象可以直接放TIMAGE组件的吧
mbahamut
2006/6/29 12:54:39
不用这么复杂...这五行足够解决问题: procedure TForm1.FormCreate(Sender: TObject); begin Brush.Bitmap := TBitmap.Create; Brush.Bitmap.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Back.bmp'); Brush.Bitmap.FreeImage; end; procedure TForm1.FormDestroy(Sender: TObject); begin Brush.Bitmap.Free; Brush.Bitmap := nil; end;
iamdream
2006/7/14 15:47:06
mbahamut的方法的确简单,不过如果出现滚动条,则点滚动条时效果就不好了。
我要发表评论
查看全部评论