难道这个问题真的很难?是DELPHI不如VC吗?怎么连做一个WIN画图程序都不行,高手进来啊 (200分)

  • 主题发起人 主题发起人 程序小鱼
  • 开始时间 开始时间

程序小鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
首先对大家感谢!
1我想做一个类似于WIN带的画图程序而已,可是很多细节,很多问题出现了!首先是让用户画矩形,必须先他虚拟画出一个框,然后放开鼠标时就画上去。这个虚拟的框就不好做。DELPHI大部分人的做法是把PEN.mode:=pmNot什么的,可是这样的话,如果用户在彩色的图上画的话,框就不是黑色的了!颜色就杂了。这样效果不好。如果用其它mode画就不能涂掉了!如果在IAMGE组件以外画,又对不好坐标,无法准确把框画到IMAGE里
2WIN画图还是有点“层”概念。这个怎么来实现呢?像PHOTOSHOP一样,可以把许多东西一层一层的画,它们之间还是透明的,还可以合并。这个技术怎么做。谁能帮帮我,我另出分感谢。
3我想做出WIN画图输入文字效果,谁帮忙啊:)
4用喷枪效果
以上问题,每小题都有分。另出分感谢!!!
 
呵呵,如果你用vc可以实现的话
用delphi就可以实现了
 
建议先熟悉一下绘图的函数,
以及如何处理对象被覆盖后的重绘,以及图像移动后的闪烁问题

了解一下 G32 这个组件包吧
 
我想了一下,给你个建议吧,当你画虚拟框的时候啊,你给鼠标的事件中生成一个image对象或是bitmap对象,他们的边框是虚线的,他们是透明的,或是把他们后面的图画到自己身上。当你取消时把这个对象free掉,当你选中图象移动时,你移动的是动态生成的那个对象,而他们以前的位置用画图白色填充。我自己没做,只是一个想法。我做过拼图和扫雷,它们都偏重于算法。除此以外没作过画布的程序,所以,建议有可能挺幼稚,别见笑,我们可以互相讨论的。
 
呵呵,努力学习吧,没有delphi不能办到的,连虚拟驱动还能写呢(不过要低版本的delphi才可以)
 
1
基本你的有两个canvas对象,一个是记录画好后的东西,一个是当前显示的东西
就是说,你拉虚线框的时候是在第二个canvas上画,而所谓擦除,就是把第一个canvas
上的相同位置的东西再复制到第二个canvas上
2
由上面的想法可以知道,所谓图层也就是由canvas对象组成的链表,每个canvas都有
一个优先级,表示谁在上,而透明,只要用个2级循环对canvas里每个象素点按算法处理
一下就可以实现了
 
那个虚拟的框可以用Shape来做,将Shape的Pen的Mode和Style设为pmMask和psDot,然后在
onmousedown,onmousemove,onmouseup事件里设Shape的Wdith,Height,Top,Left。这样还不影响你背景上的画。
 
首先声明:楼主要的东西我这里都实现了,不过我这里是矢量的图形,转换到珊格是完全没有问题的。
x_coffee 说的用两个Canvas 来实现当前已经存在的图形和正在画的图形的区分是可行的 ,而x_coffee说的图层的概念也是如此,我目前就是用类似的方法实现的。
另外每个地物之间的先后顺序,其实是每个Canvas都对应一个图形的链表,在Draw的时候根据链表里图形的顺序来画,先画的图形就被后画的图形遮挡,调整图形对象在链表里的顺序就是调整图形在显示时的先后层次了。
 
我想说的是
不是delphi不如vc
是楼主即使用vc,你也不会写出这样的程序,对吧?
 
:草原牧歌的想法和我差不多。扫雷我也做过。你说的方法中,我就是有一块不明白。就是我另画的矩形的东西,怎么画在对应的IMAGE1里呢?因为IMAGE1不可能是全屏的,所以不能按屏幕坐标也不可以按FORM的坐标。我不会做这步。
 
x_coffee的方法不错。我感觉很好。不过不知道如此大的运算,图一定会抖动吧。DELPHI处理图时总容易抖
liujh, 的方法还是和上种问题,无法找到,SHAPE在IAMGE1上的相对坐标
:giswang能否给出代码:)
我想说的是,并不是DELPHI不如VC。我这么说,只是让大家多参与。没办法。。。。:)
不过学DELPHI和VC的思路是不同的
 
请你们看看这个例子。这个网址上,有个例子可以DOWN,VC的。我就想做出这种效果就行了。谁能帮我!!!
http://www.erjid.com/cpp/BaseUse/CRectTrack/CRectTracker.html
 
比如我画了一个(1,1,100,100)矩形,brush.style:=clclear;pen.width:=5;
form1下面有图,我想把这个矩形擦掉,怎么做。不能用form1的color重画,因为FORM上有图,图中的颜色也不同。
 
有点恶心,跟DELPHI有什么关系

DELPHI做游戏都行,会连这么个小画图都做不来吗
 
建议你买一本DELPHI与图形相关的书籍来看看,因为你对这方面的知识较少!
[:D]
 
VC也很难,不信你用VC做一个试试
 
找个矢量图的控件吧!
何苦要自己画呢,要不就copy点代码,如rm中的设计时的代码。
 
我看楼主只会下源码来修改
 
我已经差不多了。但有个问题,就是怎么清除画布上的一个矩形呢?
 
invalidate, 使其失效,然后重画
 

Similar threads

D
回复
0
查看
849
DelphiTeacher的专栏
D
D
回复
0
查看
693
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部