泰州电脑学习网  
收藏本站
  当前位置 : 首页 >> 电脑基础 >> 软件应用 >>
VC++中色彩的运用
来源:本站 日期:2007-7-8 点击:

如华丽得体的衣装可以让一个外貌平平的女孩变得自信而愉快那样,在VC++程序界面中适当地配上颜色也会使你的程序变得生动悦目。

  一、寻找VC++中调色板的配色参数
  最直接的方法是设置应用程序主窗体的背景色。对此,简单的办法是通过ClassWizard在视图中创建一个成员函数来响应消息WM_ERASEBKGND,关键源代码如下:

   BOOL CMyView::OnErase Bkgnd(CDC* pDC)

  {

   CBrush backBrush(RGB(255,255,0));

   CBrush* pOldBrush=pDC->SelectObject(&backBrush);

   CRect rect;

   pDC->GetClipBox(&rect);

   pDC->PatBlt(rect.left,rect.top,rect.Width(),rect.Height(),PATCOPY);

   pDC->SelectObject(pOld Brush);

  return TRUE;

  }

  本段代码的作用是将主窗体背景绘制成米黄色,其中所用的RGB宏是用于指定三原色(红,绿,蓝)的“配比数”,每个值都是0~255之间的一个整数。在上面代码中RGB表示混合同样一份红色与绿色,并关闭蓝色得到黄色;0,0,0为黑色,255,255,255为白色。

  RGB宏是VC++程序使用颜色的基础,但在使用时遇到的棘手问题是,当你选择一种“中间色”时,你如何才能知道确切的“配方”──那三个0~255之间的颜色参数分别是多少?这也是笔者在研制一个项目中遇到的一个实际问题,尽管它在整个项目中显得微不足道。为此,笔者编制了一个实验程序,运行后可以调用MFC的颜色对话框,当我们选中具体颜色后,就得到其RGB值,并存放到文本文件RGBNum中。当我们得到这个值后,在上面代码中就可以用这个数值去替代RGB宏了。实验程序具体代码如下:

  void CMyView::OnSelRGB()

  {

  CColorDialog colorDialog;

  COLORREF Mycolor;

  FILE *fin;

  fin=fopen("RGBNum.txt","a");

  if(colorDialog.DoModal()==IDOK)

  {

  Mycolor =colorDialog.GetColor();

  fprintf(fin," Mycolor =%ld\n",Mycolor);

  fclose(fin);

  }

  }

  上述代码是通过COLORREF获取RGB颜色值的。COLORREF是一个32bit整数,它常用RGB宏作初始化。

  二、设置对话框的背景颜色
  要改变应用程序所有对话框的背景颜色,可以调用CwinApp::SetDialogBkColor(),它的第一个参数指定了背景颜色,第二个参数指定了文本颜色。www.jz5u.com

  下例将应用程序对话框设置为蓝色背景和黄色文本。

  BOOL CMyApp::InitInstance()

  {

  ......

   //蓝色背景黄色文本

   SetDialogBkColor(RGB(0,0,255),RGB(255,255,0));

   ......

  }

  三、如何控制文字的显示颜色
  在VC++编程中,常会用LOGFONT结构中的14个字段定义去控制显示字符的大小、粗细、角度、字体等。而且可以用函数SetTextColor(COLORREF crColor)设置字符颜色。有关代码如下所示:

  void CMyView::OnDraw(CDC* pDC)

  {

   CMenuCom03Doc* pDoc = GetDocument();

   ASSERT_VALID(pDoc);

   // 设置文本颜色

   COLORREF color=RGB(0,250,0);

  pDC->SetTextColor(color);

  pDC->TextOut(120,200,"彩色字体样例");

  }

  下一步,我们还可以设置具有翻转背景颜色的文本。即调用CDC::SetBkMode()函数并传送TRANSPARENT使背景颜色保持不变。以下代码用红色带阴影显示文本:

  void CMyView::OnDraw(CDC* pDC)

  {

   CDelemeDoc* pDoc = Get Document();

   ASSERT_VALID(pDoc);

   // TODO: add draw code for native data here

   CRect rc;

   GetClientRect(rc);

   CString str(_T("Hello,World!"));

   pDC->SetBkMode(TRANS PARENT);

   rc.OffsetRect(1,1);

   pDC->SetTextColor(RGB(0,0,0));

  pDC->DrawText(str,str.GetLength(),rc,DT_SINGLELINE|DT_CENTER|DT_VCENTER);

  rc.OffsetRect(-1,-1);

  pDC->SetTextColor(RGB(255,0,0));

  pDC->DrawText(str,str.GetLength(),rcView,DT_SINGLELINE|DT_CEN TER|DT_VCENTER);

  }

  本文列举的源代码均在VC++6.0下调试运行通过。

 


责任编辑:不详

打印本文 关闭本页 返回页首
相关文章
·CSS 属 性 一 览 表 ·CSS 属 性 一 览 表
·phpwind数据库里哪些表是重要的 ·人人都知的智能ABC5招
·让QQ永久在线——挂QQ的办法 ·美女图片处理
·Photoshop处理美女图片为彩色线描特效 ·让千千静听的歌词像播放VCD一样显示!
·常用软件加密方法一览 ·解除Word非法退出后的只读锁定
·C++编程技巧 ·制作安装与反安装程序
·多媒体文件格式转换速查手册 ·计算机等级考试释疑:VB应试心得
·-几段代码使空间焕然一新 ·教程收集|WPS2005表格新功能简明教程(全集...
  热点文章
·键盘操作大全
·如何重装xp系统图解
·神奇地加快XP宽带上...
·如何组装一台电脑
·电脑组装全教程
·五笔字型输入法
·让QQ永久在线——挂...
·bios设置图解教程
  推荐文章
·最新驱动下载
·什么是Google优化
·网站备案绕过手机验证...
·电脑无法启动的特殊故...
·启动“黑屏”故障检修...
·几种主板BIOS报警声音...
·网管维护局域网技巧大...
·网络经典命令行
  相关文章
网站首页 | 关于我们 | 在线学习 | 业务联系 | 版权声明 | 联系方式 | 留言/建议/投诉 | 技术交流
客服邮箱:web@0523pc.com  QQ:43957884
 版权所有、肆意抄袭、模仿必究 泰州电脑© 2004 苏ICP备07003435号