O ow Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-07 #1 我目前在做一个程序,需要把图像放大到任意大小,并且支持图像的漫游(即用鼠标可以 平滑拖动这幅放大后的图像),请问应该如何实现?
S system_owen Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-07 #2 1 Image stretch 属性为TRUE 时图象随SIZE 自动缩放, 2 把IMAGE放在滚动框里,控制鼠标事件
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-07 #3 http://tingweb.363.net/tips/25/tips2519.htm
H Huzzz Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-07 #4 如果是矢量图,请看YYSUN的教材《计算机地图制图》: http://c_a_c.myetang.com/ 部分内容未全,有完整的DEMO(非常好的东西),可以下载程序和源程序。 如果是平面图像,如果你愿意,我可以发一个我的小DEMO给你。
如果是矢量图,请看YYSUN的教材《计算机地图制图》: http://c_a_c.myetang.com/ 部分内容未全,有完整的DEMO(非常好的东西),可以下载程序和源程序。 如果是平面图像,如果你愿意,我可以发一个我的小DEMO给你。
O ow Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-07 #5 to Huzzz: 方便的话,发一个给我吧, ccw@zju.edu.cn
O ow Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-09 #7 to Huzzz: 不好意思,我到现在还没有收到您的信,您能否改发到chcw@21cn.com,谢谢。
D dadabox Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-10 #9 你看我的這個問題﹐就是你想要的,一模一樣﹐哈﹐當初我出200分﹐你出300分。 http://www.delphibbs.com/delphibbs/dispq.asp?lid=684538
O ow Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-10 #10 to Huzzz: 非常感谢您的代码,我有一个问题想请教,当图像放大后,你用FBufBitmap来存放放大后 的图像,那么如果图像放大到10000 x 10000, 或者大到TBitmap无法处理的程度,那么该 怎么办呢?
to Huzzz: 非常感谢您的代码,我有一个问题想请教,当图像放大后,你用FBufBitmap来存放放大后 的图像,那么如果图像放大到10000 x 10000, 或者大到TBitmap无法处理的程度,那么该 怎么办呢?
D dadabox Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-10 #11 大到無法處理﹐如果你還能打開﹐你可以分割圖像看看﹐只取那一部分﹐我沒試過﹐說說而已。
H Huzzz Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-10 #12 ow: FBufBitmap只会保存当前VIEW视区大小的图形,并不是整个!! 其实FBufBitmap是一个屏幕图形缓冲。
O ow Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-10 #13 to Huzzz: 我明白了,谢谢你。还有个问题想请教,你的鼠标在Pan模式的时候,每移动一次鼠标, 就要把FGraphic画到FBufBMP上,然后再把FBufBMP的内容画到控件的Canvas上,那么为什么 不直接把FGraphic画到控件的Canvas上呢?
to Huzzz: 我明白了,谢谢你。还有个问题想请教,你的鼠标在Pan模式的时候,每移动一次鼠标, 就要把FGraphic画到FBufBMP上,然后再把FBufBMP的内容画到控件的Canvas上,那么为什么 不直接把FGraphic画到控件的Canvas上呢?
H Huzzz Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-10 #14 这是为了把缩放平移后的画图结果缓存下来,如果用户停止缩放平移,那么画图刷新 速度就比较快(如最小化后再复原,只是一次BITBLT的时间),也可以减少一些闪烁。 不过在此DEMO中用处不是很大。 另外你可以发现图形太大时放大速度比较慢。我对BMP图作了处理,对BMP的放大会比 较快。
这是为了把缩放平移后的画图结果缓存下来,如果用户停止缩放平移,那么画图刷新 速度就比较快(如最小化后再复原,只是一次BITBLT的时间),也可以减少一些闪烁。 不过在此DEMO中用处不是很大。 另外你可以发现图形太大时放大速度比较慢。我对BMP图作了处理,对BMP的放大会比 较快。
H Huzzz Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-11 #15 ow: 我后来作了改进,对JPEG的放大也进行了优化,提高了JPEG放大速度。
O ow Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-11 #16 to Huzzz: 多谢你。关于第187行 StretchDraw(R, FGraphic); 我还有一点小问题不明白: 1. R的范围和FBufBMP.Canvas的大小不一致,不会产生问题吗? 2. R的范围如果超出了FBufBMP.Canvas的大小,那么StretchDraw还会不会 花费CPU时间在超出的部分上进行绘图。 3. R的范围有没有限制? 谢谢。
to Huzzz: 多谢你。关于第187行 StretchDraw(R, FGraphic); 我还有一点小问题不明白: 1. R的范围和FBufBMP.Canvas的大小不一致,不会产生问题吗? 2. R的范围如果超出了FBufBMP.Canvas的大小,那么StretchDraw还会不会 花费CPU时间在超出的部分上进行绘图。 3. R的范围有没有限制? 谢谢。
H Huzzz Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-11 #17 1. R的范围和FBufBMP.Canvas的大小不一致,不会产生问题吗? 一般不会。 2. R的范围如果超出了FBufBMP.Canvas的大小,那么StretchDraw还会不会 花费CPU时间在超出的部分上进行绘图。 这个StretchDraw是由Graphic实现的,因此一般都会。我们没法改这个StretchDraw。 如TBitmap和TMetafile的StretchDraw是完全不一样的。但我们可以通过一些办法减少 这种花费。你看我在输出BMP时我就作了处理,加快了StretchDraw。 3. R的范围有没有限制? 有的。跟TRect和Canvas(HDC)的定义有关。但一般来说不会超出。
1. R的范围和FBufBMP.Canvas的大小不一致,不会产生问题吗? 一般不会。 2. R的范围如果超出了FBufBMP.Canvas的大小,那么StretchDraw还会不会 花费CPU时间在超出的部分上进行绘图。 这个StretchDraw是由Graphic实现的,因此一般都会。我们没法改这个StretchDraw。 如TBitmap和TMetafile的StretchDraw是完全不一样的。但我们可以通过一些办法减少 这种花费。你看我在输出BMP时我就作了处理,加快了StretchDraw。 3. R的范围有没有限制? 有的。跟TRect和Canvas(HDC)的定义有关。但一般来说不会超出。