这是最终想要达到的效果。俗称画中画。
个人对作图这块很模糊啊。
求指导下。
给点建议也行 。
谢谢啦。。

解决方案 »

  1.   

    有第三方的图片处理库来做方便把  codeproject上搜搜
      

  2.   


    具体我也说不出来。
    就是在这个control上面通过线条的方式
    CDC *pDC = GetDlgItem(IDC_STATIC_PIC)->GetDC();//IDC_STATIC_SHOW是ID
    HDC hDC= pDC->GetSafeHdc();
    然后
    MoveToEx();
    LineTo();
    这种是移动到某点 画直线到下个点。能画出一种图
    可是我发现上面这样画点 比较2啊。。
    而且主要的是。子的矩阵跟主的 ,重叠的部分,应该把主的遮住。别的可能是直接贴2个矩形上去(我想的。)
      

  3.   

    首先这个不一定非得用Picture控件来实现
    其次,如果你们指定用picture控件来实现了,也没关系, 直接去改写他的OnPaint
    如何画矩形?
    使用CDC::FillRect就可以画矩形了两个矩形的位置,由画矩形的代码所处位置决定
    也即在较后面调用的FillRect出来的矩形会在上面
      

  4.   

    我是,使用MFC的自带控件来的嘛。
    改写onpaint的话 if (IsIconic())
    {
    CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    CPaintDC dc(&m_PictureCtrl);
    dc.Rectangle(2,2,450,380);//最外层的边框
    }这是我初始化的时候做的一点事。就是在picture沿着边框弄的矩形。现在这个 ,还需要依据右边的“标准” “画中画”等来改变这个图片的内容。
    所以这个改写部分,您能不能再稍微说详细点?或者,您如果有别的好办法也可以说说呢?
      

  5.   

    其实就是几个窗口,从cview类中继承出来,然后开发出自己想要的。
      

  6.   

    我是,使用MFC的自带控件来的嘛。
    改写onpaint的话 if (IsIconic())
    {
    CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    CPaintDC dc(&m_PictureCtrl);
    dc.Rectangle(2,2,450,380);//最外层的边框
    }这是我初始化的时候做的一点事。就是在picture沿着边框弄的矩形。现在这个 ,还需要依据右边的“标准” “画中画”等来改变这个图片的内容。
    所以这个改写部分,您能不能再稍微说详细点?或者,您如果有别的好办法也可以说说呢?比如:你们右边不是要能定义矩形的位置和宽高么?
    那你把位置和宽高做成四个变量,
    在OnPaint里用这些变量来画矩形然后右边在设置完四个变量以后,invalidate一下,
    就可以了
      

  7.   


    版主。这个我实现了。现在貌似还有个小问题。
    dc.Rectangle(2,2,450,380);
    这样得到的矩形之后,能否改变矩形的边框颜色呢?
    就像我截的图那样,红的、橙色的?