GDI绘制_matlab中intlinprog函数用法

GDI绘制_matlab中intlinprog函数用法设备上下文绘图有很多种方法。例如通过创建位图画刷,利用其填充一个区域来实现图像的绘制。此外,还可以使用CDC类的位图函数来输出位图到设备上下文中。BitBlt用于从原设备中复制位图到目标设备,语法格式如下:BOOLBitBlt(intx,inty,intnWidth,intnHeight,CDC*pSrcDC,intxSrc,intySrc,DWORDdwRop);x:目

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

设备上下文绘图有很多种方法。例如通过创建位图画刷,利用其填充一个区域来实现图像的绘制。此外,还可以使用CDC类的位图函数来输出位图到设备上下文中。

BitBlt 用于从原设备中复制位图到目标设备,语法格式如下:

BOOLBitBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int ySrc,DWORDdwRop);

x:目标矩形区域的左上角x轴坐标点。

y:目标矩形区域的左上角y轴坐标点。

nWidth:在目标设备中绘制位图的宽度。

nHight:在目标设备中绘制位图的高度。

pSrcDC:源设备上下文对象指针。

xSrc:源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。

ySrc:源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。

dwRop:光栅操作代码

dwRop有如下选择:

BLACKNESS           使用黑色填充目标区域

DSTINVERT              目标矩阵区域颜色取反

MERGECOPY            使用与运算组合原设备矩形区域的颜色和目标设备的画刷

MERGEPAINT           使用或运算将反向的源矩形区域的颜色和目标矩形区域的颜色合并

NOTSRCCOPY          复制源设备区域的反色到目标设备中

NOTSRCERASE        使用或运算组合源设备区域与目标设备区域的颜色,然后对结果颜色取反

PATCOPY                  复制源设备当前选中的画刷到目标设备

PATINVERT               使用异或运算组合目标设备选中的画刷和目标设备区域的颜色

PATPAINT                 通过或运算组合目标区域当前选中的画刷和源设备区域反转的颜色

SRCAND                   使用与运算组合源设备和目标设备区域的颜色

SRCCOPY                 直接复制源设备区域到目标设备中

SRCERASE               使用与运算组合目标设备区域的反色与源设备区域的颜色

SRCINVERT              使用异或运算组合源设备区域颜色和目标设备区域颜色

SRCPAINT                 使用或运算组合源设备区域颜色和目标设备区域颜色

WHITENESS             使用白色填充目标区域

StretchBlt与BitBlt不同在于StretchBlt方法能够延伸或收缩位图以适应目标区域的大小。格式如下:

BOOLStrevhBlt(int x,int y,int nWidth,int nHeight,CDC* pSrcDC,int xSrc,int ySrc,intnSrcWidth,int nSrcHeight,DWORD dwRop);

 

x:目标矩形区域的左上角x轴坐标点。

y:目标矩形区域的左上角y轴坐标点。

nWidth:在目标设备中绘制位图的宽度。

nHight:在目标设备中绘制位图的高度。

pSrcDC:源设备上下文对象指针。

xSrc:源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。

ySrc:源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。

nSrcWidth;需要复制的位图宽度。

nSrcHeight;需要复制的位图高度。

dwRop:光栅操作代码。

下面是两种方法对比程序,程序代码如下:

void CoutoutBmpView::OnDraw(CDC* pDC)

{

     COutputBmpDoc* pDoc =GetDocument();//获取文档对象

     ASSERT_VALID(pDoc);//验证文档对象

     CDC memDC;//定义一个设备上下文

     memDC.CreateCompatibleDC(pDC);//创建兼容的设备上下文

     CBitmap bmp;//定义位图对象

     bmp.LoadBitmap(IDB_BKBITMAP);//加载位图

     memDC.SelectObject(&bmp);//选中位图对象

     pDC->BitBlt(30,20,180,180,&memDC,1,1,SRCCOPY);//绘制位图

     //以上是利用BitBlt来绘制位图

     CRect rc(30,20,210,200);//定义一个区域

     CBrush brush(RGB(0,0,0));//定义一个黑色的画刷

     pDC->FrameRect(rc,&brush);//绘制矩形边框

     //只是用来观察两者区别的,绘制一个矩形框

     rc.OffsetRect(220,0);//移动区域

//下边是利用StretchBlt绘制的位图

     BITMAP BitInfo;//定义位图结构

     bmp.GetBitmap(&BitInfo);//获取位图信息

     int x = BitInfo.bmWidth;//获取位图宽度

     int y = BitInfo.bmHeight;获取位图高度

     pDC->StretchBlt(rc.left,rc.top,rc.Width(),rc.Height(),&memDC,0,0,x,y,SRCCOPY);//绘制位图

     pDC->FrameRect(rc,&brush);//绘制边框

     brush.DeleteObject();//释放画刷

     memDC.DeleteDC();//释放设备上下文

     bmp.DeleteObject();//释放位图对象

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180455.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • docker菜鸟教程linux_linux离线安装docker

    docker菜鸟教程linux_linux离线安装dockerlinux安装和使用docker教程文章目录linux安装和使用docker教程1、docker官网安装地址2、卸载linux系统中的docker3、安装docker4、查看安装docker列表5、启动docker6、设置docker开机启动7、查看docker版本8、docker的image远程仓库地址9、拉去镜像10、启动及常用命令1、docker官网安装地址https://docs.docker.com/engine/install/centos/2、卸载linux系统中的docker

  • 1123581321递归算法_线性递归数列例题

    1123581321递归算法_线性递归数列例题[BZOJ3231][Sdoi2008]递归数列题目大意给定Ci,i∈[1,k]给定C_i,i\in[1,k]定义若i>k,Ai=Ai−1∗C1+Ai−2∗C2+⋯+Ai−k∗Ck若i>k,A_i=A_{i-1}*C_1+A_{i-2}*C_2+\cdots+A_{i-k}*C_k否则Ai=Bi否则A_i=B_i询问sum(A)n−sum(A)m−1询问sum(A)_n-sum(A

  • springboot的启动流程图_springboot运行流程

    springboot的启动流程图_springboot运行流程文章目录前言springboot启动流程图第一部分newSpringApplication()第二部分工厂对象构建实例第三部分SpringApplication.run(启动此应用)第四部分SpringApplicationRunListener第五部分banner彩蛋前言研究springboot启动的整个流程。springboot启动流程图第一部分newSpringApplication()第二部分工厂对象构建实例第三部分SpringApplication.

  • out of memory解决方法(python慢的原因)

    折腾了一整天又换电脑又重装系统重装各种软件插件 最后发现outofmemory只是因为少写了一行代码 内心的崩溃无法用语言形容 虽然本来是乌龙一场但是这个过程中解决问题get一些新技能 也不能说完全没有收获【一个大写的心理安慰】开始我的4G小笔记本outofmemory之后,我换了一个32G内存的电脑 各种重装系统折腾半天好不容易都装好了程序可

  • 如何修改mysql占用的端口号_修改mysql端口号(mysql的端口号)[通俗易懂]

    如何修改mysql占用的端口号_修改mysql端口号(mysql的端口号)[通俗易懂]修改mysql端口号(mysql的端口号)2020-05-0722:12:00共10个回答如何查看mysql默认端口号和修改端口号登录mysql,使用命令showglobalvariableslike’port’;查看端口号修改端口在配置文件my.ini,修改后重新启动.[mysqld]port=3506如何修改修改mysql默认端口号3306在配置文件my.ini中找到port修改port的值…

  • Java基础——成员变量、局部变量和静态变量的区别

    Java基础——成员变量、局部变量和静态变量的区别之前在刚开始学习Java的时候,就谈了谈Java基础中的变量,虽然知道这货以后会经常用到,但没想到了基本语法这里,竟然有冒出来了成员变量、局部变量和静态变量。变来变去太容易让人搞晕了,挑拣出来梳理一下喽!    要想区分这哥仨,首先,我们得知道它们分别是什么。先从成员变量下刀。成员变量    我们来研究一个事物:        属性:外在特征;例如人的身高

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号