绘制矩形

调用 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. OpenCV+iOS开发使用文档

      一.      前言     OpenCV是开源的跨平台的计算机视觉库,实现了图像处理.计算机视觉和机器学习的很多通用算法. 对于移动设备没有快速输入的键盘,大的屏幕,其优势在于图像和声音,因此要 ...

  2. Java:解决Servlet的UTF8编码问题

    要让Servlet支持UTF8,需要在doGet或者doPost中添加如下一条语句: request.setCharacterEncoding("UTF-8");

  3. rsync + inotify 打造多server间文件实时同步

    在上篇文章ssh无password登陆server的基础之上.能够利用rsync + Inotify 在多server间实现文件自己主动同步. 例如以下測试机基于三台server做的.内网IP分别例如 ...

  4. Android实战之 万能的接口回调

    转载请标明原地址:http://blog.csdn.net/gaolei1201/article/details/47084111 前言:本人也算是自学"成才",呵呵,大学时尽管学 ...

  5. 新手对ASP.NET MVC的疑惑

    习惯了多年的WEB FORM开发方式,突然转向MVC,一下子懵了,晕头转向,好多不习惯,好多不明白,直到现在也没弄明白,只好先记下来,在应用中一一求解. 主要集中在视图(View)这里. 1.@Htm ...

  6. jquery-layer弹出框

    样式1: 代码: 前台jsp: $("#add_table").bind("click",function(){ layer.open({ type: 2, t ...

  7. 使用printf函数实现串口信息打印——设置IAR和Keil的Options

    在Keil和IAR中都可以使用printf函数,但两者设置的方法不一样.以下分别是IAR和Keil的设置. 下面是Keil的设置. 选中Options--->Target--->Code ...

  8. C# List常识之经常被忽略的常识

    最近在接收前辈的代码,越来越会发现有很多.net已经封装好的方法可以使用,我们却不知道,然后自己去For/Foreach循环解决自己的需求问题 总的来说:当下很忧伤啊.总结了几个经常需要用却不知道的方 ...

  9. scws

    SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统). 这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成 ...

  10. Winform 异步调用

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...