绘图软件的编程原理是什么

来源:百度知道 编辑:UC知道 时间:2024/09/28 13:20:11
打开hotoshop,新建图像,在画布上画一个椭圆,一个矩形和一条直线,则共出现3个图层,当选中一个图层,就能编辑该图层的图形,比如移动矩形的位置,修改其大小,我编了一个小程序实现类似功能实现,原理是使用链表来存储每一个图元信息,编辑图元就是编辑图元相关的链表节点,然后通过刷新(遍历整个链表)的方式来实现画板上各个图元的显示,但有一个问题没有解决,就是图形的刷新速度问题,因为每次当一个图元被鼠标移动时,整个画板都会被刷新,当刷新的面积较大,图元数目较大时,计算机就会速度跟不上,造成整个画板出现闪烁,而hotoshop大家知道当编辑一个图层的图形时,整个图形的刷新是不闪烁的,所以我认为hotoshop肯定使用了更为高效的绘图方法,谁能讲一下类似hotoshop这样的软件中中数据结构的组织,画板的刷新原理呀,主要重点是修改画布一个图元,为什么其它图元不会出现刷新时的闪烁。
200分送上
不是要算法,只要基本原理

一般来说,可以用双缓冲原理.在内存DC上先画好,再直接拷贝到显示DC上.

高中时都学过向量吧,向量即为计算机图形学的基础。再引入坐标系统之后就出现先 3D 技术。Photoshop 使用的是内核 + 表现互相分离的处理模式,简单的说,你能在 Photoshop 上看到的图形、元件都是假的,都是位图。真正的矢量图并没有直接显示在那上面,因而提高了运行速度。

让我大胆些猜
最起码先摆脱GDI,进入DriectDraw,而实际上PS用了多种缓冲方式,说白了,连你用的API人家都重写过了.这一点可从MAC-PC移植的事件来判断.即使没有Windows人家也能干活,现在只不过采用Win的一些输出方式而已,你过去的编程知识现在只能作为基础知识了,呵呵.
如果你想研究一个东西,我建议你采用3D游戏的引擎来做用户界面(2D界面,3D引擎),当用户确认操作后,在后台按操作处理图片,然后再返回界面,目前还没人这么做,呵呵,可能是贴图尺寸问题吧,通常在4096*4096.应该可以拼图的.我觉得这个可以把现有显卡的一些特性发挥出来,比如超快的变形,光照等效果.
有结果先发给我一个:)

看看有关计算机图形学方面的书就会明白了。

如四楼所说,采用双缓冲即可。在内存中预先吧把图像绘制好,然后一下子全部拷贝出来,几乎感觉不到刷新的。
双缓冲是一项很常见的技术,游戏啊等都会使用的。directx里面还专门提供了双缓冲管理函数。普通的也可以自己多建一个CDC,HDC什么的

我悄悄的来了那了2分又悄悄的走了朋友