about canvas(50分)

  • 主题发起人 主题发起人 SuperMMX
  • 开始时间 开始时间
我得干会儿活了,晚上回家继续想这个问题.
 
诸位大虾,帮帮忙,cAkk,CJ,要帮我呀!

再不行就要用 TScrollBox + TImage 了

分不够再加。

我要多多学习。
 
废话, canvas当然不能保存东西啦. canvas只是提供一个windows的dc的
封装.
要保存需要用bitmap
 
你的问题的关键是操作画笔的那个程序是不是你自己写的程序?

如果不是自己写的程序,你根本无法知道他要画的图形是否超出canvas边界;
如果是你写的程序,要好办一些,可以在画之前把坐标用消息通知一下canvas所在
的窗口,如果超出边界,就增加尺寸.

即使这样做,也要用image才好,因为image增大尺寸后,scrollbox能够自动
出现滚动条.
 
谢谢cAkk大虾,我只在我的程序中调用。
我想在控件中加一个draw的过程,另一个程序调用draw,我觉得应加在
draw里,但具体不知道怎么做,该发什么消息,Canvas的大小又如何改变,
我也觉得挺烦的,您如果觉得烦的话,就说一句话,我就放弃了,
只好用TScrollBox + TImage 了。
如果觉得还行的话,就给我发e-mail 吧。supermmmx@263.net,

分先加上,谢谢了。

谢谢诸位网友!
 
建议还是用Image来做,有什么特殊原因一定要用Canvas吗?
Canvas的大小改变对ScrollBox根本没有影响.

如果你的画图程序和你的ScrollBox就是同一个程序,那就简单了,
直接调用ScrollBox的Draw方法(假设你已经做好了这个属性)就可以了.

如果是你写的另一个exe程序,那么可以用消息来告诉ScrollBox画图.
你可以在2个exe中先用RegisterWindowMessage注册一个私有的消息,然后
画图程序用SendMessage发送消息给ScrollBox所在窗口,画图参数也
一起包括进去.ScrollBox所在窗口收到消息后,首先看看参数表示的
画图坐标是否超出Image的边界,如果true,就增加它的尺寸(当然,中间
可能要用一个临时bitmap做交换),Image尺寸增加后,ScrollBox会
立即有反映,比如出现滚动条等.

听起来挺麻烦,实际上就2个函数:
RegisterWindowMessage
SendMessage
看看这2个函数的API帮助,非常简单的.

当然,其实说穿了,就是2个exe程序通讯的问题,类似方法很多,比如DDE,
namedpipe,Shared Mem.....
 

Similar threads

后退
顶部