注意:这是在桌面上绘制图形。如果想在VC++ MFC工程的视窗口上绘制图形。可以这么来,在工程View类的一个菜单响应(或者鼠标单击等事件的的响应)函数中添加下面main 中的代码,只需要将“红色字体”的改正为“hWnd”或者“this”.读者可以试一下。

#include<windows.h>
int main( void )
{
     HDC hdc = GetWindowDC(GetDesktopWindow());  // 获取一个可供画图的DC,我这里就直接用桌面算了

HPEN hpen1 = CreatePen( PS_SOLID, 1, RGB(255,0,0) ); // 创建红色1像素宽度的实线画笔
     //创建绿色5像素宽度的破折画笔,如果你想创建其他种类的画笔请参阅MSDN
     HPEN hpen2 = CreatePen( PS_DASH, 5, RGB(0,255,0) );
     HBRUSH hbrush1 = CreateSolidBrush( RGB(0,0,255) );     // 创建一个实体蓝色画刷

HBRUSH hbrush2 = (HBRUSH)GetStockObject( NULL_BRUSH );// 创造一个透明的画刷

// 将hpen1和hbrush1选进HDC,并保存HDC原来的画笔和画刷
     HPEN hpen_old = (HPEN)SelectObject( hdc, hpen1 );
     HBRUSH hbrush_old = (HBRUSH)SelectObject( hdc, hbrush1 );

Rectangle( hdc, 40, 30, 40+200, 30+50 );// 在(40,30)处画一个宽200像素,高50像素的矩形
     SelectObject( hdc, hpen2 );  // 换hpen1和hbrush1,然后在(40,100)处也画一个矩形,看看有何差别
     SelectObject( hdc, hbrush2 );
     Rectangle( hdc, 40, 100, 40+200, 100+50 );

Ellipse( hdc, 40, 200, 40+200, 200+50 );// 画个椭圆看看
     MoveToEx( hdc, 0, 600, NULL );// 画个(0,600)到(800,0)的直线看看
     LineTo( hdc, 800, 0 );
     SetPixel( hdc, 700, 500, RGB(255,255,0) );// 在(700,500)处画个黄点,不过这个点只有一像素大小,你细细的看才能找到

// 恢复原来的画笔和画刷
     SelectObject( hdc, hpen_old ); 
     SelectObject( hdc, hbrush_old );

return 0;
}

搬家于 CSDN 2015-05-14

VC 在桌面上绘制一些图形的更多相关文章

  1. 软件项目技术点(7)——在canvas上绘制自定义图形

    AxeSlide软件项目梳理   canvas绘图系列知识点整理 图形种类 目前我们软件可以绘制出来的形状有如下这几种,作为开发者我们一直想支持用户可以拖拽的类似word里面图形库,但目前还没有找到比 ...

  2. 摘记 史上最强大的40多个纯CSS绘制的图形(一)

    今天在国外的网站上看到了很多看似简单却又非常强大的纯CSS绘制的图形,里面有最简单的矩形.圆形和三角形,也有各种常见的多边形,甚至是阴阳太极和网站小图标,真的非常强大,分享给大家. Square(正方 ...

  3. 史上最强大的40多个纯CSS绘制的图形[转]

    今天在国外的网站上看到了很多看似简单却又非常强大的纯CSS绘制的图形,里面有最简单的矩形.圆形和三角形,也有各种常见的多边形,甚至是阴阳太极和网站小图标,真的非常强大,分享给大家. Square(正方 ...

  4. 在高德地图上用svg.js绘制简单图形

    这段时间做的一个项目,需要在地图上绘制简单的图形.在学习高德地图JS API的过程中,发现高德地图提供的点.线等API并不能满足我的需求,还好它开放了自定义图层CustomLayer,官方说自定义图层 ...

  5. 学习笔记:HTML5 Canvas绘制简单图形

    HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...

  6. css绘制特殊图形,meida查询,display inline-box间隙问题以及calc()函数

    本文同时发表于本人个人网站 www.yaoxiaowen.com 距离上一篇文章已经一个月了,相比于写代码,发现写文章的确是更需要坚持的事情.言归正传,梳理一下这一个月来,在写ife任务时,有必要记录 ...

  7. 40多个纯CSS绘制的图形

    本文由码农网 – 陈少华原创,转载请看清文末的转载要求. 今天在国外的网站上看到了很多看似简单却又非常强大的纯CSS绘制的图形,里面有最简单的矩形.圆形和三角形,也有各种常见的多边形,甚至是阴阳太极和 ...

  8. iOS开发UI篇—Quartz2D使用(绘制基本图形)

    iOS开发UI篇—Quartz2D使用(绘制基本图形) 一.简单说明 图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:保存绘图信息.绘图状态 ...

  9. 用Path来绘制一些图形

    Path是android中用来封装几何学路径的一个类,因为Path在图形绘制上占的比重还是相当大的.你可以用它来绘制各种样式的几何图形,做图表什么的都可以. 一.画线段 1.1 lineT(float ...

随机推荐

  1. Spring Cloud Turbine 知识点

    Turbine 默认使用 Eureka 作为注册中心:如果使用 Consul 作为注册中心,需要排除掉 Eureka:pom.xml 如下: <dependency> <groupI ...

  2. python基础语法17 面向对象4 多态,抽象类,鸭子类型,绑定方法classmethod与staticmethod,isinstance与issubclass,反射

    多态 1.什么是多态? 多态指的是同一种类型的事物,不同的形态. 2.多态的目的: “多态” 也称之为 “多态性”,目的是为了 在不知道对象具体类型的情况下,统一对象调用方法的规范(比如:名字). 多 ...

  3. offsetWidth的bug

    #div1{width:200px;border:1px solid red;} 这个时候如果用 offsetWidth 提取 #div1 的宽  得到的值是 202: 也就是说 offsetWidt ...

  4. ubuntu16.04深度学习环境配置

    https://www.lizenghai.com/archives/14651.html https://blog.csdn.net/qq_40936141/article/details/8119 ...

  5. js日志组件封装

    js日志组件~~ 1 function Logger(level) { if (!(this instanceof Logger)) { return new Logger(); } var ERRO ...

  6. 【oracle】update 某字段为null

    字段 = null 注意这个字段要可以为空

  7. 【java】oracle好用,但java运行缺失右括号

    可能原因SQL拼接有空格被省略导致sql粘连. 解决办法,扩大拼接或者缩小拼接范围.

  8. struts2学习1

    struts2使用优势 自动封装参数 参数校验 结果的处理(转发|重定向) 国际化 显示等待页面 表单的防止重复提交 struts2具有更加先进的架构以及思想 使用拦截器 struts2的历史 str ...

  9. 如何使用docker部署springcloud???

    如何使用docker部署springcloud??? springcloud 必须基于 springboot 项目来开发, 这里讲解springboot项目的部署, springcloud项目也是同理 ...

  10. 【树状数组】【P3372】 【模板】线段树 1

    Description 给定一个长度为 \(n\) 的序列,有 \(m\) 次操作,要求支持区间加和区间求和. Limitation \(1 \leq n,~m \leq 10^5\) 序列元素值域始 ...