日期:2014-05-17  浏览次数:20937 次

当你需要做一个画图板,你觉得应该选用哪个控件作为绘图区?
本帖最后由 dahuatttt 于 2013-09-17 23:08:57 编辑
画布大小是可以比窗口还大的,这时候一定需要垂直和水平滚动条。所以我第一个想到的是使用textbox,然后在Textbox文本区作画。但是发现去光标处理很麻烦而且滚动条和光标结合很严重,请问有什么别的控件可以做替代?
或者说,干脆我的思路就是错误的?

------解决方案--------------------
picturebox试试,画图时先画在一张图片上,然后赋值给picturebox。如果图片比picturebox大,则出现滚动条
------解决方案--------------------

------解决方案--------------------
我这个主绘图区是个自定义控件 panel+2个滚动条
------解决方案--------------------
最简单的办法应该是从Control直接继承自己加滚动条控件,然后override OnPaint就行了

从ScrollableControl继承的话反而更麻烦,会不知道系统给做了哪些事又没做哪些,干脆自己写来的快

------解决方案--------------------
滚动范围是根据地图大小计算的,右下角那个方块设置其中一个滚动条的Padding属性
------解决方案--------------------
引用:
Quote: 引用:

滚动范围是根据地图大小计算的,右下角那个方块设置其中一个滚动条的Padding属性

底下那个滚动条设置了Pendding-right:20
没变化。。

应该这样 :panel+V H滚动条 + 一个corner(panel)
corner 宽度为V滚动条宽度 dock right padding buttom 16  
V滚动条放置corner里,dock right
H滚动条dock buttom
panel为该面板
------解决方案--------------------
画板继承自control。
------解决方案--------------------
ScrollView+picturebox试试
------解决方案--------------------
两个PictureBox,外面的设置AutoScroll,里面的保存图片。

另外,你只要绘制可视范围之内的图形就可以了,使用双缓冲有利于更多提高性能。
------解决方案--------------------
强烈建议楼主看看这个开源项目,和你的需求很相似. http://www.codeproject.com/Articles/8494/DrawTools