picture control上作图的问题。 这是最终想要达到的效果。俗称画中画。个人对作图这块很模糊啊。求指导下。给点建议也行 。谢谢啦。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有第三方的图片处理库来做方便把 codeproject上搜搜 具体我也说不出来。就是在这个control上面通过线条的方式CDC *pDC = GetDlgItem(IDC_STATIC_PIC)->GetDC();//IDC_STATIC_SHOW是IDHDC hDC= pDC->GetSafeHdc();然后MoveToEx();LineTo();这种是移动到某点 画直线到下个点。能画出一种图可是我发现上面这样画点 比较2啊。。而且主要的是。子的矩阵跟主的 ,重叠的部分,应该把主的遮住。别的可能是直接贴2个矩形上去(我想的。) 首先这个不一定非得用Picture控件来实现其次,如果你们指定用picture控件来实现了,也没关系, 直接去改写他的OnPaint如何画矩形?使用CDC::FillRect就可以画矩形了两个矩形的位置,由画矩形的代码所处位置决定也即在较后面调用的FillRect出来的矩形会在上面 我是,使用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沿着边框弄的矩形。现在这个 ,还需要依据右边的“标准” “画中画”等来改变这个图片的内容。所以这个改写部分,您能不能再稍微说详细点?或者,您如果有别的好办法也可以说说呢? 其实就是几个窗口,从cview类中继承出来,然后开发出自己想要的。 我是,使用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一下,就可以了 版主。这个我实现了。现在貌似还有个小问题。dc.Rectangle(2,2,450,380);这样得到的矩形之后,能否改变矩形的边框颜色呢?就像我截的图那样,红的、橙色的? mschart使用问题 对话框界面问题 如何实现在对文本编辑框双击打开文件目录选择对话框,并在文本编辑框中显示选择后的文件路径. 如何实现同一BHO不同实例的通讯 能告诉我一个接收窗口句柄的api吗 如何避免工具栏显示不全? 我有问题 求一API HOOK的例子 如何关闭一个视图?用OnClose()????? 请教高手一个关于进程的问题! 求助 CWebBrowse2编程入门级问题
具体我也说不出来。
就是在这个control上面通过线条的方式
CDC *pDC = GetDlgItem(IDC_STATIC_PIC)->GetDC();//IDC_STATIC_SHOW是ID
HDC hDC= pDC->GetSafeHdc();
然后
MoveToEx();
LineTo();
这种是移动到某点 画直线到下个点。能画出一种图
可是我发现上面这样画点 比较2啊。。
而且主要的是。子的矩阵跟主的 ,重叠的部分,应该把主的遮住。别的可能是直接贴2个矩形上去(我想的。)
其次,如果你们指定用picture控件来实现了,也没关系, 直接去改写他的OnPaint
如何画矩形?
使用CDC::FillRect就可以画矩形了两个矩形的位置,由画矩形的代码所处位置决定
也即在较后面调用的FillRect出来的矩形会在上面
改写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的话 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一下,
就可以了
版主。这个我实现了。现在貌似还有个小问题。
dc.Rectangle(2,2,450,380);
这样得到的矩形之后,能否改变矩形的边框颜色呢?
就像我截的图那样,红的、橙色的?