最近要在TC下编一个画图程序,有一点困难,请大家指点

xiaonanln 2003-12-12 06:34:18
在画各种图形时,按下鼠标后所画的图形应该随着鼠标的移动而移动.这个如何实现啊.
...全文
15 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xiaonanln 2003-12-13
但在下如果用异或,希望大家指点.
我的想法是先把图形画在另一个没显示出来的位面上,再将图形读入内存,然后再与当前图形做异或处理
只是不知道有没有什么方法可以真接将图形画在内存中
  • 打赏
  • 举报
回复
skywarship 2003-12-12
不知楼主学过图形学没有。
简单的说吧,如果只是简单的在屏幕上画一些图形,并要求可以用鼠标拖动,其实不难实现,楼上各位已经说的很清楚了,可以:

1 -- 取覆盖整个图形的矩形区域的坐标,将这个区域内的图象保存起来,然后随鼠
标的拖动不断在屏幕上重绘,这有两种实现方法:使用库函数和直接操作显存

2 -- 记下图形的绘制方法,在鼠标移动时,不断擦除旧位置的图形,并在新位置重新画
出图形,这也有两种实现方法:用黑块覆盖旧图形和用异或方式在原图形位置重画清除旧图形

以上是针对“简单的在屏幕上画一些图形,并要求可以用鼠标拖动”的实现思路。如果想象AutoCAD那样,能对屏幕上的图形进行选取、改变形状等操作时,上述的方法就行不通了,因为我们没有保存图形,只是简单的在屏幕上把图形画出来了。这样也就谈不到图形的选取和变形等后续操作,如果想实现这些功能的话,就必须建立数据结构来保存所画的图形。

建议楼主看看清华版的《计算机图形学基础》
  • 打赏
  • 举报
回复
阿发伯 2003-12-12
笨办法:每次画之前,getimage保存图形覆盖区,移动或删除时putimage恢复图形覆盖区
  • 打赏
  • 举报
回复
skywarship 2003-12-12
那么简单吗?那么图形怎么选取呢,如果画了两个图形--两个圆,圆心重合,半径相差在两三个象素,怎么知道鼠标选中的要移动的圆是哪一个呢?
  • 打赏
  • 举报
回复
cxjddd 2003-12-12
可以用“异或”方式来画图,这样用户移动时,再画一次就可以删除了。
  • 打赏
  • 举报
回复
xiaonanln 2003-12-12
如果这么简单就好了.原有的图像不能破坏掉啊
  • 打赏
  • 举报
回复
maxx 2003-12-12
你可以在一个循环中捕捉鼠标坐标
再进行绘画

  • 打赏
  • 举报
回复
layman2008 2003-12-12
背景色覆盖原来的图像,然后采集鼠标的位置,然后重画
  • 打赏
  • 举报
回复
skywarship 2003-12-12
什么意思?是指可以用鼠标拖动所画的图形吗?
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.6w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 小灸舞
申请成为版主
帖子事件
创建了帖子
2003-12-12 06:34
社区公告
暂无公告