MFC画眼睛###

换画笔(画刷)颜色(参考链接:https://blog.csdn.net/sunxiving/article/details/51272001)

  • 由于画笔一旦创建后就无法修改。所以要修改画笔的颜色要用DeleteObject()函数将其删除​,之后再创建新的画笔
  • 例子:换为白色
    CBrush brush, *oldBrush;//创建画刷
brush.CreateSolidBrush(RGB(0,0,0));//原来为黑色
oldBrush=pDC->SelectObject(&brush);
pDC->Ellipse(0,0,200,100);//画一个椭圆
brush.DeleteObject();//删掉原来brush brush.CreateSolidBrush(RGB(255, 251, 240));//更改颜色
oldBrush=pDC->SelectObject(&brush);//重新选取
pDC->Ellipse(50,0,150,100);//再画一个颜色不同的
pDC->SelectObject(oldBrush);//还回画刷

没有参考代码,尝试自己画一波眼睛简图

  • 只给出OnDraw(CDC* pDC)函数。
void CJustPaintView::OnDraw(CDC* pDC)//paint an eye
{
CJustPaintDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetViewportExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);
rect.OffsetRect(-rect.Width()/2, -rect.Height()/2);//erweizuobiaoxi CBrush brush, *oldBrush;
brush.CreateSolidBrush(RGB(0,0,0));
oldBrush=pDC->SelectObject(&brush);
pDC->Ellipse(0,0,200,100);
brush.DeleteObject(); //change color of brush
brush.CreateSolidBrush(RGB(255, 251, 240));
oldBrush=pDC->SelectObject(&brush);
pDC->Ellipse(50,0,150,100);
brush.DeleteObject(); //change color of brush
brush.CreateSolidBrush(RGB(0,0,0));
oldBrush=pDC->SelectObject(&brush);
pDC->Ellipse(50,25,150,75);
brush.DeleteObject(); //change color of brush
brush.CreateSolidBrush(RGB(255,0,0));
oldBrush=pDC->SelectObject(&brush);
pDC->Ellipse(75,25,125,75);
pDC->SelectObject(oldBrush);
}

效果

MFC更换画笔(画刷)颜色以及画眼睛(GDI画图)的更多相关文章

  1. C# GDI绘图之——画笔和画刷

    绘制图形需要画笔和画刷: Pen(画笔类): Pen为C#编程语言中专门的画笔类 使用方式: // 用系统颜色来初始化我们的画笔类,使用Color静态类中的颜色 1. Pen p1 = new Pen ...

  2. GDI+编程(画笔/画刷/路径/区域)

    构造Graphics对象 Graphics类是GDI+程序设计的核心,Graphics类能够完成大部分的绘图,文本输出,几何图形的填充及坐标系统的转换等各种操作.在功能上,它与GDI的设备环境(DC) ...

  3. WPF样式之画刷结合样式

    第一种画刷,渐变画刷GradientBrush (拿线性渐变画刷LinearGradientBrush(其实它涵盖在GradientBrush画刷内.现在拿他来说事.),还有一个圆心渐变画刷Radia ...

  4. 《WPF程序设计指南》读书笔记——第2章 基本画刷

    1.Color结构 using System; using System.Windows; using System.Windows.Input; using System.Windows.Media ...

  5. Sliverlight之 画刷

    1,5种画刷 (见Project15) (1)TextBlock控件中的Forground和BackGround属性是一个什么对象?它在前台的完整的写法是什么?(实际是.net做了一个转换,可以直接写 ...

  6. c# gdi设置画刷透明

    使用solidBrush新建画刷,定义画刷的颜色为透明色 Brush b = new SolidBrush(Color.FromArgb(50, Color.Green)); 这里的50是透明度的设置 ...

  7. c# 如何设置透明画刷

    使用solidBrush新建画刷,定义画刷的颜色为透明色 Brush b = new SolidBrush(Color.FromArgb(50, Color.Green)); 这里的50是透明度的设置 ...

  8. 【WPF学习】第四十章 画刷

    画刷填充区域,不管是元素的背景色.前景色以及边框,还是形状的内部填充和笔画(Stroke).最简单的画刷类型是SolidColorBrush,这种画刷填充一种固定.连续的颜色.在XAML中设置形状的S ...

  9. WPF设计の画刷(Brush)

    一.什么是画刷 画刷是是一种渲染方式,用于填充图形形状,如矩形.椭圆.扇形.多边形和封闭路径.在GDI+中,画刷分为以下几种:SolidBrush,TextureBrush,HatchBrush,Li ...

随机推荐

  1. js中select标签中的option选择

    f1 = function () { //var selected_val = document.getElementById(test).value; var obj = document.getE ...

  2. mysql 开发进阶篇系列 45 物理备份与恢复(xtrabackup 安装,用户权限,配置)

    一. 安装说明 安装XtraBackup 2.4 版本有三种方式: (1) 存储库安装Percona XtraBackup(推荐) (2 )下载的rpm或apt包安装Percona XtraBacku ...

  3. mysql 开发基础系列3 日期数据类型

    日期类型 如果要用来表示年月日,通常用DATE 来表示. 如果要用来表示年月日时分秒,通常用DATETIME 表示. 如果只用来表示时分秒,通常用TIME 来表示. TIMESTAMP表示格式 :YY ...

  4. Js中处理日期加减天数

    Js的处理日期还是很方便的. 一. 格式化日期为2017-07-04的格式 function formatTime(date) { var year = date.getFullYear(); var ...

  5. ZOJ Problem Set - 1730 Crazy Tea Party

    #include<cstdio> int main(){ int T,n; scanf("%d",&T); while(T--){ scanf("%d ...

  6. [NewLife.XCode]功能设置

    NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...

  7. docsify网站文档工具用法总结

    docsify , 网站文档动态生成工具,类似gitbook 特性 无需构建,写完文档直接发布 容易使用并且轻量 (~19kB gzipped) 智能的全文搜索 提供多套主题 丰富的 API 支持 E ...

  8. Java反射,注解,以及动态代理

    Java反射,注解,以及动态代理 基础  最近在准备实习面试,被学长问到了Java反射,注解和动态代理的内容,发现有点自己有点懵,这几天查了很多资料,就来说下自己的理解吧[如有错误,望指正] Java ...

  9. 记一次SSM项目小结(一)

    记一次SSM项目小结(一) ssm框架 环境配置 服务器配置 解决方法  拦截器重定向到localhost nginx和tomcat中session失效 mybatis的xml文件不生效 数据库用户创 ...

  10. 伪指令 ADR 与 LDR 的区别

    指令简介: adr r0, _start 得到的是 _start 的当前执行位置,由 pc+offset 决定 ldr r0, =_start 得到的是绝对的地址,链接时决定 程序示例: ldr r0 ...