GDI 边框绘制函数(8)
绘制矩形
调用 Rectangle 函数可以绘制一个矩形(它将填充这个矩形):
BOOL Rectangle(
HDC hdc, // 设备环境句柄
int nLeftRect, // 左边线的位置
int nTopRect, // 上边线的位置
int nRightRect, // 右边线的位置
int nBottomRect // 下边线的位置
);
绘制椭圆
调用 Ellipse 函数可以绘制一个椭圆,它和绘制矩形的参数相同:
BOOL Ellipse(
HDC hdc, // 设备环境句柄
int nLeftRect, // 左边线的位置
int nTopRect, // 上边线的位置
int nRightRect, // 右边线的位置
int nBottomRect // 下边线的位置
);
绘制圆角矩形
调用 RoundRect 函数可以绘制一个圆角矩形,它的边框与前面两个相同,并且还需要两个参数:
BOOL RoundRect(
HDC hdc, // 设备环境句柄
int nLeftRect, // 左边线的位置
int nTopRect, // 上边线的位置
int nRightRect, // 右边线的位置
int nBottomRect, // 下边线的位置
int nWidth, // 圆角上的小椭圆的宽度
int nHeight // 圆角上的小椭圆的高度
);
绘制弧线、弓形、扇形
分别调用 Arc、Chord、Pie 函数,可以绘制弧线、弓形和扇形,这三个函数参数相同:
BOOL Arc(
HDC hdc, // 设备环境句柄
int nLeftRect, // 左边线的位置
int nTopRect, // 上边线的位置
int nRightRect, // 右边线的位置
int nBottomRect, // 下边线的位置
int nXStartArc, // 起始点 x 坐标
int nYStartArc, // 起始点 y 坐标
int nXEndArc, // 终点 x 坐标
int nYEndArc // 终点 y 坐标
);
BOOL Chord(
HDC hdc, // 设备环境句柄
int nLeftRect, // 上边线的位置
int nTopRect, // 上边线的位置
int nRightRect, // 右边线的位置
int nBottomRect, // 下边线的位置
int nXRadial1, // 起始点 x 坐标
int nYRadial1, // 起始点 y 坐标
int nXRadial2, // 终点 x 坐标
int nYRadial2 // 终点 y 坐标
);
BOOL Pie(
HDC hdc, // 设备环境句柄
int nLeftRect, // 左边线的位置
int nTopRect, // 上边线的位置
int nRightRect, // 右边线的位置
int nBottomRect, // 下边线的位置
int nXRadial1, // 起始点 x 坐标
int nYRadial1, // 起始点 y 坐标
int nXRadial2, // 终点 x 坐标
int nYRadial2 // 终点 y 坐标
);
这三个函数使用起点和终点来控制绘图,这样程序员就可以无需自行计算精确的坐标,就能完成绘制工作。
LINEDEMO 示例程序
#include <windows.h>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
HDC hdc;
PAINTSTRUCT ps;
static int cxClient, cyClient;
switch (message) {
case WM_SIZE:
cxClient = LOWORD(lParam);
cyClient = HIWORD(lParam);
return ;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
Rectangle(hdc, cxClient / , cyClient / , cxClient * / , cyClient * / );
MoveToEx(hdc, , , NULL);
LineTo(hdc, cxClient, cyClient);
MoveToEx(hdc, , cyClient, NULL);
LineTo(hdc, cxClient, );
Ellipse(hdc, cxClient / , cyClient / , cxClient * / , cyClient * / );
RoundRect(hdc, cxClient / , cyClient / , cxClient * / , cyClient * / , cxClient / , cyClient / );
EndPaint(hwnd, &ps);
return ;
case WM_DESTROY:
PostQuitMessage();
return ;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
LPCTSTR lpszClassName = TEXT("LineDemo");
LPCTSTR lpszWindowName = TEXT("LineDemo Program");
WNDCLASS wndclass;
wndclass.cbClsExtra = ;
wndclass.cbWndExtra = ;
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hInstance = hInstance;
wndclass.lpfnWndProc = WindowProc;
wndclass.lpszClassName = lpszClassName;
wndclass.lpszMenuName = NULL;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
if (!RegisterClass(&wndclass)) {
MessageBox(NULL, TEXT("This program requires Windows NT!"), lpszWindowName, MB_ICONERROR);
return ;
}
HWND hwnd = CreateWindow(
lpszClassName,
lpszWindowName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
MSG msg;
while (GetMessage(&msg, NULL, , )) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
GDI 边框绘制函数(8)的更多相关文章
- 学习windows编程 day3 之窗口绘画二:边框绘制函数
#include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM l ...
- 【Windows编程】系列第五篇:GDI图形绘制
上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...
- C#中的GDI+图形绘制方法
GDI+图形绘制方法 1.首先对于绘制图形,必须的先将命名空间导入:using System.Drawing.Drawing2D; 2.然后在一个事件中写入程序 首先先将Graphics这个对象实例化 ...
- gdi+ 高速绘制透明窗体
gdi+ 高速绘制透明窗体: 方法一: 1.用Iamge对象载入png资源, 2.调用drawimage函数讲图片绘制出了 3.UpdateLayeredWindow对窗体进行布局 方法二: 1.用B ...
- WPF GDI+字符串绘制成图片(二)
原文:WPF GDI+字符串绘制成图片(二) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/BYH371256/article/details/83 ...
- MATLAB绘制函数图
序言 Matlab可以根据用户给出的数据绘制相应的函数图.对于单个2D函数图,需要给出一个行向量x作为函数图上离散点集的横坐标,以及一个与x列数一样的横坐标y作为函数图上点集的纵坐标. 向量x和y的取 ...
- WPF GDI+字符串绘制成图片(一)
原文:WPF GDI+字符串绘制成图片(一) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/BYH371256/article/details/83 ...
- python之绘制函数pyplot初探
我们想将我们手里的数据通过图形的方式展示出来,这样我们更直观的,更可以发现数据带给我们的信息.今天给大家介绍要给python中pyplot绘制函数.一般我们想将手里的数据绘制成图形,分为四大步:1.准 ...
- GDI+学问------ 绘制可变角度的色彩渐变效果
GDI+ 它是GDI(Windows 图形设备接口提供的早期版本)也许是版本号,它是Microsoft Windows XP作系统即兴许版本号的图形显示技术. 它已经集成到了.Net开发环境中.所以无 ...
随机推荐
- 【转】Maven的安装与使用(ubuntu)
原文: http://www.cnblogs.com/yunwuzhan/p/5900311.html https://maven.apache.org/guides/getting-started/ ...
- [RxJS 6] The Catch and Rethrow RxJs Error Handling Strategy and the finalize Operator
Sometime we want to set a default or fallback value when network request failed. http$ .pipe( map(re ...
- BPMN使用工具
EA 非常多设计人员都在使用EA.他不仅支持UML,相同也全然支持BPMN2.0.<BPMN规范中的三种视图 >展示的BPMN中三种视图就是使用此工具所绘制. activitidesig ...
- HDU1698 Just a Hook 【线段树】+【成段更新】+【lazy标记】
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- 转:java身份证格式强校验
package com.dsh.zealandweb.utils; import java.util.HashSet; import java.util.regex.Pattern; import o ...
- 使用U-Boot的TFTP(远程/网络内核)
前提条件 假设您的主机PC运行的是Ubuntu 14.04.1 LTS或更高版本,并且与您的开发平台在同一个本地网络上;为了简单起见,我们假设网络上也有DHCP服务器.如果使用Juno,请确保使用的是 ...
- bzoj3224: Tyvj 1728 普通平衡树(平衡树)
bzoj3224: Tyvj 1728 普通平衡树(平衡树) 总结 a. cout<<(x=3)<<endl;这句话输出的值是3,那么对应的,在splay操作中,当父亲不为0的 ...
- 分享的js代码,从w3c上拓下来的
<!DOCTYPE html><html><head> <title></title> <script>window._bd_s ...
- idea常用快捷键(转)
---恢复内容开始--- IntelliJ Idea 常用快捷键列表 Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文件 Ctrl+S ...
- POJ 3264 线段树 ST
题意:给你一个数列,从中挑一段,问你这段数的最大值减最小值是多少. 思路:线段树. // by Sirius_Ren #include <cstdio> #include <algo ...