程序在一个矩形区域显示了文本,现在鼠标左键单击给文本着色,我用画刷来填充,它将整个矩形区域全刷了,把文本覆盖
了。怎么实现文本着色,高亮啊?

pDC->SetBkMode(TRANSPARENT); 用这个吗?好象不行哦

解决方案 »

  1.   

    矩形区域是picture空间吧?创建一个类,在它的OnPaint里先绘制背景,再输出文字。可以定义个COLORREF 变量来制定文字的颜色,当鼠标单击时,改变该变量的值,然后刷新控件即可。void CMyPic::OnPaint()
    {
       CPaintDC dc(this);
       CBrush white;
       white.CreateSolidBrush(RGB(255,255,255));
       CBrush * pOldb =dc.SelectObject(&white);
       dc.Rectangle();
       
       dc.SetBkMode(TRANSPARENT);
       dc.SetTextColor(myColor);//myColor为上面提到的COLORREF变量
       dc.TextOut(0,0,"test");
    }
    CMyPic myPic;此句包含在头文件中
    void CMyDLg::OnLDown()//左键按下消息响应
    {
      myPic.myColor = RGB(255,0,0);
      myPic.Invalidate();
    }
      

  2.   

    其实就是先把原来的涂掉再重新用别的颜色画而已,楼上说的够详细的了在dc.TextOut(0,0,"test"); 之后加上:white.DeleteObject();
    pOldb->DeleteObject();否则会有内存泄漏的。