绘制矩形

调用 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)的更多相关文章

  1. 学习windows编程 day3 之窗口绘画二:边框绘制函数

    #include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM l ...

  2. 【Windows编程】系列第五篇:GDI图形绘制

    上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...

  3. C#中的GDI+图形绘制方法

    GDI+图形绘制方法 1.首先对于绘制图形,必须的先将命名空间导入:using System.Drawing.Drawing2D; 2.然后在一个事件中写入程序 首先先将Graphics这个对象实例化 ...

  4. gdi+ 高速绘制透明窗体

    gdi+ 高速绘制透明窗体: 方法一: 1.用Iamge对象载入png资源, 2.调用drawimage函数讲图片绘制出了 3.UpdateLayeredWindow对窗体进行布局 方法二: 1.用B ...

  5. WPF GDI+字符串绘制成图片(二)

    原文:WPF GDI+字符串绘制成图片(二) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/BYH371256/article/details/83 ...

  6. MATLAB绘制函数图

    序言 Matlab可以根据用户给出的数据绘制相应的函数图.对于单个2D函数图,需要给出一个行向量x作为函数图上离散点集的横坐标,以及一个与x列数一样的横坐标y作为函数图上点集的纵坐标. 向量x和y的取 ...

  7. WPF GDI+字符串绘制成图片(一)

    原文:WPF GDI+字符串绘制成图片(一) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/BYH371256/article/details/83 ...

  8. python之绘制函数pyplot初探

    我们想将我们手里的数据通过图形的方式展示出来,这样我们更直观的,更可以发现数据带给我们的信息.今天给大家介绍要给python中pyplot绘制函数.一般我们想将手里的数据绘制成图形,分为四大步:1.准 ...

  9. GDI+学问------ 绘制可变角度的色彩渐变效果

    GDI+ 它是GDI(Windows 图形设备接口提供的早期版本)也许是版本号,它是Microsoft Windows XP作系统即兴许版本号的图形显示技术. 它已经集成到了.Net开发环境中.所以无 ...

随机推荐

  1. 【转】Maven的安装与使用(ubuntu)

    原文: http://www.cnblogs.com/yunwuzhan/p/5900311.html https://maven.apache.org/guides/getting-started/ ...

  2. [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 ...

  3. BPMN使用工具

    EA  非常多设计人员都在使用EA.他不仅支持UML,相同也全然支持BPMN2.0.<BPMN规范中的三种视图 >展示的BPMN中三种视图就是使用此工具所绘制. activitidesig ...

  4. HDU1698 Just a Hook 【线段树】+【成段更新】+【lazy标记】

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  5. 转:java身份证格式强校验

    package com.dsh.zealandweb.utils; import java.util.HashSet; import java.util.regex.Pattern; import o ...

  6. 使用U-Boot的TFTP(远程/网络内核)

    前提条件 假设您的主机PC运行的是Ubuntu 14.04.1 LTS或更高版本,并且与您的开发平台在同一个本地网络上;为了简单起见,我们假设网络上也有DHCP服务器.如果使用Juno,请确保使用的是 ...

  7. bzoj3224: Tyvj 1728 普通平衡树(平衡树)

    bzoj3224: Tyvj 1728 普通平衡树(平衡树) 总结 a. cout<<(x=3)<<endl;这句话输出的值是3,那么对应的,在splay操作中,当父亲不为0的 ...

  8. 分享的js代码,从w3c上拓下来的

    <!DOCTYPE html><html><head> <title></title> <script>window._bd_s ...

  9. idea常用快捷键(转)

    ---恢复内容开始--- IntelliJ Idea 常用快捷键列表 Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文件 Ctrl+S ...

  10. POJ 3264 线段树 ST

    题意:给你一个数列,从中挑一段,问你这段数的最大值减最小值是多少. 思路:线段树. // by Sirius_Ren #include <cstdio> #include <algo ...