绘图问题,想不通

pop155 2004-09-15 01:06:07
在image中画直线和图形,如下:
Paint的消息或事件;其实比较好的做法是用Image 显示bitmap ;在内存中画好,再拷贝给image显示;大致如下:

var
bmp : Tbitmap;
begin
bmp := Tbitmap.Create;
bmp.Width := 100;
bmp.Height := 100;
bmp.Canvas.Brush.Style := bsClear;
bmp.Canvas.Brush.Color := ClRed;
bmp.Canvas.TextOut(0, 0, 'xxxxxxxxxxxxx');
bmp.Canvas.LineTo(100, 100);
Image1.Picture.Bitmap.FreeImage;
Image1.Picture.Bitmap.Assign(bmp);
bmp.Free;
end;

这个代码片断定义绘制空间为:bmp.Width := 100;bmp.Height := 100;
但是现在我需要绘制的图很大:200000,200000 大小,
超出了image能显示最大的范围,显示不了了,怎么办?

我现在的做法是把image放在窗体中,它的高和宽都设为它能允许的最大值,在这个image中画图形,超出窗体的image部分可拖动窗体的滚动条察看,但是现在我绘的图像放大后要比image能允许显示的最大值要大,显示不全,我该怎么写好啊?类似于vc中的文档视图。 不知道我说清楚了没有。
...全文
224 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
QSmile 2004-11-01
  • 打赏
  • 举报
回复
如果只是滚动问题 图片不会变态的大
把Image 放在一个 TScrollBox 里就可以了。

但如果图片真的大的变态
那要自己写很多方法来处理显示与滚动了。

也不能老想用控件来编程。
fansofamei 2004-10-11
  • 打赏
  • 举报
回复
单纯的线、图形绘画,楼主可以考虑采用矢量画图,存储为自定义格式
grjs2004 2004-09-29
  • 打赏
  • 举报
回复
分开画好些!要是机器读取那么多的像素,肯定是运行不好!速度慢,甚至死机!
SuanAddMiao 2004-09-29
  • 打赏
  • 举报
回复
肯定要分开画,无论速度和效果都会好。
heat 2004-09-15
  • 打赏
  • 举报
回复
你在放大的时候也只画
可见部分
xhh_88 2004-09-15
  • 打赏
  • 举报
回复
你申明多个Tbitmap实例,一个用来保存原始尺寸的,其他用来保存过程中的,你在放大的时候也只画
可见部分.
zzwu 2004-09-15
  • 打赏
  • 举报
回复
将图像缩小一个比例再画就行了.
SydPink 2004-09-15
  • 打赏
  • 举报
回复
没有那么大的图可以画,就算能画,要吃掉多少内存啊?有点麻烦,要分开画。
pop155 2004-09-15
  • 打赏
  • 举报
回复
那是不是还要处理滚动条,除了这样还有没有其他的方法了?

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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