大师别睡午觉:关于一个画图的问题。

initialize 2001-12-17 12:34:00
我想完成的效果是,点一次画一条红线,再点一次,清除红线。。循环
CTestDlg::OnClick(){
CClientDC dc(this);
CPen redPen (PS_SOLID,RGB(255,0,0)),*op;
op = dc.SelectObject(&redPen );
dc.SetROP2(R2_NOT);
dc.MoveTo(10,10);
dc.LineTo(100,100);
dc.SelectObject(op);
}

但画出来的是灰色的线,我检查后发现是SetROP2()的问题。
该怎么避免这个问题?(背景是图片)
...全文
80 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
JoeXu 2001-12-17
  • 打赏
  • 举报
回复

CClientDC dc(this);
int iOldRop = dc.SetROP2(R2_NOTXORPEN);

CPen redPen(PS_SOLID,0,RGB(255,0,0)),*op;
op = dc.SelectObject(&redPen );


dc.MoveTo(10,10);
dc.LineTo(100,100);
dc.SelectObject(op);
dc.SetROP2(R2_NOT);

给分!!我是在梦中被你叫醒的
initialize 2001-12-17
  • 打赏
  • 举报
回复
真的在睡觉吗?
whiskers 2001-12-17
  • 打赏
  • 举报
回复
按JoeXu(Joe)的做,没错。
但记住系统设置为16位颜色数以上
initialize 2001-12-17
  • 打赏
  • 举报
回复
问题仍未完全解决,咋办呢。?
initialize 2001-12-17
  • 打赏
  • 举报
回复
回 JoeXu(Joe) :
按您所说的去做。在有些背景部分,红色的线条看不到,即,该红色和背景图
颜色也做过某种运算,以至于红色线条是不连续的。
wyongyong 2001-12-17
  • 打赏
  • 举报
回复
不好意思第二个RGB应该是RGB(192,192,192)
wyongyong 2001-12-17
  • 打赏
  • 举报
回复
CClientDC dc(this);
dc.SetROP2(R2_COPYPEN);
CPen redPen (PS_SOLID,1,RGB(255,0,0)),*op;
op = dc.SelectObject(&redPen );dc.MoveTo(10,10);
dc.LineTo(100,100);
dc.SelectObject(op);
CPen grayPen(PS_SOLID,1,RGB(255,0,0)),*op;
op = dc.SelectObject(&grayPen );dc.MoveTo(10,10);
dc.LineTo(100,100);
dc.SelectObject(op);

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧