初学sdk,画板程序开发了一小半,目前可以绘制直线,圆,椭圆,矩形,自由画笔。设计了这样的结构体保存每一次的操作struct Node
{
//线条的宽度
//线条的颜色
//线条的idash
//形状:直线,圆,椭圆,矩形
本次操作的起点
本次操作的终点
Node* pNext;
};
如今还有橡皮擦没有实现。擦皮擦可不等于简单的撤销功能。 有setpixel这个函数,可以把onlbuttondow里的点擦成白色的,就可以了但是如何释放 你记录的结构体呢?尤其是自由画笔记录的很多点,这个很难释放的。我不知道释放谁,释放多少个点?还有:比如 会用绘制了矩形(这个不是自由画笔画的,是画图板里的功能),结果被你用橡皮擦擦了一部分,这样可tmd麻烦了,你记录的那个结构体怎么修改,  好难啊。

解决方案 »

  1.   

    不用结构体保存反色以后保存成图片 用ciamge!
      

  2.   


    这么说,这个思路至少可以解决一个问题: 记录你的所有操作步骤。可以一一撤销刚才的操作。起码则会2带你就是它起到的作用。当然 当我要增加橡皮擦的时候,就发现无能为力了。不用结构体保存反色以后保存成图片 用ciamge!
    如何理解?能否说详细一点
      

  3.   

    看不到你的点在Node中怎么定义的
    但是擦除就是一个Node,加到链表最后就行了呀
      

  4.   


    大哥,一楼的结构体你看了吗?一个 node就是一个结构体啊, 这么明显,你没看到啊啊晕倒了每个新的node代表刚 进行完的操作这下子明白了吧
      

  5.   


    结构体是否得重新修正?当鼠标在某个点的时候,如何去擦出呢?
    必须获得以前的操作的线条宽度,颜色。楼上的结构体保存了每一步操作的起点,终点,      只根据onmousemove去推出:以前操作的起点,终点,颜色,宽度,似乎不行。如何修正结构体呢?让其保存橡皮擦操作。
      

  6.   

    struct Node
    {
    int width;//线条的宽度或橡皮擦大小
    //线条的颜色
    //线条的idash
    //形状:直线,圆,椭圆,矩形,橡皮擦,折线等
    CArray points;  //保存所有记录的点
    Node* pNext;
    };
      

  7.   

    兄弟啊,你的"自由画笔"功能是怎么用你原来的Node结构实现的啊???
    如果自由画笔有了,橡皮擦不就是个自由画笔吗?有啥区别?