我现在软件中画图采用的是双缓冲技术,但是我现在如果缩放的话,会出现网格,我现在就是如果画点的话还不要紧,
CPaintDC dc(this);
在dc中其实就是画一个矩形了,然后在我的MemDC中就是画一个点,然后在OnPaint函数中通过StreltBltbit来缩放显示,这样的话我显示的速度也比较快,
但是现在的话,如果画直线,圆角矩形,圆形,椭圆形的话,我就比较麻烦了,从网上找了一些DDA的算法,用可以用的,但是比较麻烦,我想如果在CPaintDC中也这样快速的画一个点,然后自动显示出一个网格大小的矩形那就最好了,不知道能不能这样,
呵呵,不知道大家有没有弄懂我的意思,其实就是 Windows自带的画图软件Paint.exe呵呵,如何实现

解决方案 »

  1.   

    画线 圆 椭圆的 CDC不都有对应函数么,为什么还要找些什么算法来自己画点?
      

  2.   

    我现在也在做和Windows自带的画图软件Paint.exe一样的功能的,放大的时候就有网格,不过我颜色工具栏现在搞不定,苦闷
      

  3.   


    CBrush br;
    br.CreateSolidBrush (RGB(0,0,0));
    m_pDC->SelectStockObject(NULL_PEN);
    m_pDC->SelectObject (&br);
    pDC->Rectangle(point.x/8*8,point.y/8*8,point.x/8*8+8,point.y/8*8+8);
    这个是放大8倍的点
      

  4.   

    原始图像上的一个点,对应放大后的一个正方形,放大几倍,正方形的的边上就是几个点,左上角坐标也是根据原始点的坐标乘于倍数就行了,填充颜色就是原始点的颜色,边框颜色自己定义,可能要根据填充颜色调整一下。放大后界面以外的不用绘制,双缓冲的内存DC中的位图尺寸只要保持界面大小就可以了,可以在OnSize中动态调整。