D7 和 DX 显示 图片 的简单比较

D7  的绘图 和 DX 绘图的简单比较,引用万一博客

绘图需要有纸、画笔、画刷; Delphi 有 Canvas、Pen、Brush.

Canvas 就是画布, 譬如窗体的 Canvas 属性, 就是窗体的画布;
Pen 是画笔, 可以设置笔色、笔宽等等;
Brush 是画刷, 可以设置颜色等等.

form.canvas.pen.width

form.canvas.bursh.color

 

 

Delphi 的 Graphic 单元有五个重要的图像类: TGraphic、TBitmap、TMetafile、TIcon、TPicture.

TBitmap 用来操作位图;
TMetafile 用来操作图元文件;
TIcon 用来操作图标(包括鼠标指针)文件;

TBitmap、TMetafile、TIcon 都是 TGraphic 的子类, 由于
TCanvas.Draw(X, Y: Integer; Graphic: TGraphic); 的第三个参数就是 TGraphic 类型, 
所以它们都可以通过 TCanvas.Draw 输出.

如果三种图像都要容得下, 就得用 TPicture 类, 它即包含 Bitmap、Metafile、Icon 对象属性, 也包含 Graphic 对象属性; TImage 类呢又包含 Picture 属性, 所以可以用 TImage 显示所以这些图像格式.

 

canvas.draw( x,y,tgarphic)

 

Incompatible types: 'TGraphic' and 'TPicture'

 

tpicture 不能直接用,得用 picture.graphic

TGRAPHIC 不能直接用,

能用的只有 TBITMAP。

 

 

===========================================

 

DX   显示图片

 

在 DelphiX 中, 所能看到的一般都是画在 TDXDraw.

TDXDraw 默认两个绘图表面: TDXDraw.Surface 和 TDXDraw.Primary;
一般先在后台(Surface)绘图, 然后再用 TDXDraw.Flip 命令切换前后台, 从而看到绘制效果.

TDXDraw.Flip 会置换 Surface 和 Primary 两个对象, 所以我们尽可以只在 Surface 上绘图;
由于 DirectX 的工作机制, 让这个切换速度异常地快(只是切换一个指针), 从而可以完成非常流畅的动画、游戏.



从 TDXDraw 的绘图表面也可以获取 Canvas 对象, 因而在 TDXDraw 中也可以使用 GDI/GDI+ 的绘图命令;
不过把 GDI/GDI+ 和 DirectX 一起使用应该会让 DirectX 的性能缩水, 但有这种可能总是好的, 起码比单独使用 GDI/GDI+ 要好.

下面例子中就使用了 DXDraw1.Surface.Canvas 对象;
使用完 DXDraw1.Surface.Canvas 后, 一定要释放(DXDraw1.Surface.Canvas.Release);

 

 

需要用上 TDXDRAW 控件,dximagelist 控件

DXImageList1.Items.LoadFromFile('C:\Temp\DelphiX.dxg');
  DXImageList1.DXDraw := DXDraw1;
  DXImageList1.Items[0].Draw(DXDraw1.Surface, 10, 10, 0);
  DXDraw1.Flip;

DXingaelist 用来加载图像文件
指定绘图窗口
绘图
翻转显示。


 

posted @ 2021-08-20 16:56  D7mir  阅读(356)  评论(0)    收藏  举报