TImage,TPaintbox,TSape的差别是什么?

zzwu 2011-08-21 08:43:57
TImage,TPaintbox,TSape的差别是什么?
有哪些功能是TImage上无法实现,而必须利用TPaintbox,TSape?
你们用过TSape组件吗?
...全文
284 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzwu 2011-08-30
  • 打赏
  • 举报
回复
准备用PaintBox来画了,PaintBox以前用过,谢谢各位。
zzwu 2011-08-29
  • 打赏
  • 举报
回复
up一次,再2天无人回复就结贴。
无条件为你 2011-08-29
  • 打赏
  • 举报
回复
有了TImage就有了一切。Timage可以实现后两者的功能。
阿发伯 2011-08-29
  • 打赏
  • 举报
回复
如果只是画图显示,建议用TPaintBox。如果画图后还需要保存,建议用TImage。
使用TImage画图比TPaintBox慢很多的,因为你每次都是先更新TImage.Picture.Bitmap,然后再更新到界面上,特别是一些实时显示的东西,千万不要用TImage。
至于TSape则是对Windows GDI画矩形和椭圆方法的封装,不必考虑。
池龙 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zzwu 的回复:]

作图程序当然要保存作图结果的,但我要保存的是图形的数据,像AutoCAD的DXF文件那样,而不是图形本身。不同于Photoshop。这对选用TImage,TPaintbox,TSape都不会有什么差别吧?

[/Quote]

绘图效率有差别。TImage和TShape效率比TPaintBox差不止一个档次。你试试看就知道了。
TImage是因为有缓存和自己重绘的原因,TShape虽然没有看过代码,但是从能显示固定的图形来推断必定也有类似TImage的机制。而TPaintBox基本是直接对Canvas进行的封装,效率最高。
Playmaster 2011-08-29
  • 打赏
  • 举报
回复
那你还是用paintbox吧。
其实还有更多更好的第三方画图控件,甚至能直接加载dxf文件显示出来,你要多去找找。
池龙 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zzwu 的回复:]
TShape为什么直接出局?我就想利用它,似乎不要canvas也能画各种shape,这不是很方便吗?

另外,大智慧是用TPaintBox的,好像也很方便。
[/Quote]

通过设置TShape属性只能绘制单一的图形,比如一个矩形,一个圆,你要绘制复杂图形仍然需要通过直接在Canvas上绘图来实现,那么TShape多余的属性就属于鸡肋了,完全没意义。
zzwu 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 maozefa 的回复:]
如果只是画图显示,建议用TPaintBox。如果画图后还需要保存,建议用TImage。
使用TImage画图比TPaintBox慢很多的,因为你每次都是先更新TImage.Picture.Bitmap,然后再更新到界面上,特别是一些实时显示的东西,千万不要用TImage。
至于TSape则是对Windows GDI画矩形和椭圆方法的封装,不必考虑。
[/Quote]
作图程序当然要保存作图结果的,但我要保存的是图形的数据,像AutoCAD的DXF文件那样,而不是图形本身。不同于Photoshop。这对选用TImage,TPaintbox,TSape都不会有什么差别吧?
zzwu 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 poolord 的回复:]
TShape直接出局。

TPaintBox和TImage的区别在于后者有缓存,会自动重绘,而前者没有,需要手工响应OnPaint事件来重绘。
在实际使用的时候,如果显示的图形多为静态很少改变,则用TImage比较方便,反之,用TPaintBox合适。
[/Quote]

TShape为什么直接出局?我就想利用它,似乎不要canvas也能画各种shape,这不是很方便吗?

另外,大智慧是用TPaintBox的,好像也很方便。
zzwu 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mwy654321 的回复:]
有了TImage就有了一切。Timage可以实现后两者的功能。
[/Quote]
这没有错,但反过来,是否有的功能只能在TImage上实现?
池龙 2011-08-29
  • 打赏
  • 举报
回复
TShape直接出局。

TPaintBox和TImage的区别在于后者有缓存,会自动重绘,而前者没有,需要手工响应OnPaint事件来重绘。
在实际使用的时候,如果显示的图形多为静态很少改变,则用TImage比较方便,反之,用TPaintBox合适。
zzwu 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dropme 的回复:]
这是神马?考试还是求助?
楼猪的勋章晃花了我的氪金狗眼~~蹭蹭分~~~
[/Quote]

我想编写一个3D图形软件,需要类似于AUTOCAD那样显示三个2D投影视图和一个3D透视图,

但不知道选择在什么地方上画为好,所以提出此问题。

我以前也编图形软件,都是在image上画的,那是因为我当时只知道在image上或直接在form上加

canvas可以画图,现在看到了别的地方也可以画,特别是shape上,所以想比一比哪一个更合适和方便?

zzwu 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tjianliang 的回复:]
一、TImage、TPaintbox、TShape都继承自TGraphicControl,一脉三枝
TImage,可通过Picture属性加载显示图片
TPaintbox,提供一个画布(Canvas)
TShape,直接显示一个图形,如矩形、圆形

二、AutoCAD显示图形的功能,本质上也是Canvas
[/Quote]

这是部分的解答,希望看到更多的回复!

dropme 2011-08-23
  • 打赏
  • 举报
回复
这是神马?考试还是求助?
楼猪的勋章晃花了我的氪金狗眼~~蹭蹭分~~~
亮剑_ 2011-08-23
  • 打赏
  • 举报
回复
一、TImage、TPaintbox、TShape都继承自TGraphicControl,一脉三枝
TImage,可通过Picture属性加载显示图片
TPaintbox,提供一个画布(Canvas)
TShape,直接显示一个图形,如矩形、圆形

二、AutoCAD显示图形的功能,本质上也是Canvas
zzwu 2011-08-23
  • 打赏
  • 举报
回复
up一次
zzwu 2011-08-21
  • 打赏
  • 举报
回复
补充:你知道Autocad绘图软件是在什么类型的组件上绘图的吗?

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧