HDC 的使用

本文介绍Windows环境下绘图的基本方法,包括获取设备环境、设置画笔和画刷等关键步骤,并详细解释了各种绘图函数的功能及用法。此外,还介绍了如何通过设置映像模式来调整逻辑坐标与设备坐标的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

画图方法:
1.获取设备环境
  HDC hdc;
  hdc=BeginPaint(HWND,LPPAINTSTRUCT);//开始画图(获取设备环境)----------EndPaint(HWND,LPPAINTSTRUCT);//结束画图
  hdc=GetDC(HWND);//开始画图(获取设备环境-功能更强)-------------ReleaseDC(HWND);//结束画图

3.设置画笔
  HPEN hPen;//定义画笔的句柄
  hPen=(HPEN)GetStockObject(nPenStyle);/hPen=CreatePen(nPenStyle,nWidth,rgbColor);//定义画笔
  SelectObject(HDC,HPEN); //选择画笔
  DeleteObject(HPEN);//删除画笔
4.设置画刷
  HBRUSH hBrush; //定义画刷的句柄
  hBrush=(HBRUSH)GetStockObject(nBrushStyle); /CreatSolidBrush(rgbColor);/CreateHatchBrush(nHctchStyle,rgbColor);//定义的画刷
  SelectObject(HDC,HBRUSH); //选择画刷
  DeleteObject(HBRUSH); //删除画刷
5.主要函数
  1)颜色宏:RGB(nRed, nGreen,nBlue)
  2)设置画笔当前位置的函:BOOL MoveToEx(HDC hdc,int X, int Y,LPPOINT lpPoint )
  3)从当前位置向指定坐标点画直线的函数:BOOL LineToEx(HDC hdc,int X,int Y);
  4)从当前位置开始,依次用线段连接lpPoints中指定的各点的函数BOOL Polyline(HDC hdc,LPPOINT lpPoints,int nCount)
  5)绘制椭圆弧线的函数BOOL Arc(HDC hdc,int X1,intY1, int X2,int Y2,int X3,int Y3,int X4,int Y4 )
  6)使用当前画笔绘制一个饼图,并使用当前画刷进行填充的函数:BOOL Pie(HDC hdc,int X1,intY1,int X2,int Y2,int X3,int Y3,int X4,int Y4 )
   说明:(x3,y3),(x4,y4)与圆心的连线把圆割成饼
  7)使用当前画笔绘制一个矩形,并使用当前画刷进行填充的函数:BOOL Rectangle(HDC hdc,int X1,int Y1,int X2,int Y2)
  8)绘制一个圆角矩形:BOOL RoundRect(HDC hdc,int X1,int Y1,int X2,int Y2,int nHeight,int nWidth)
  9)绘制一个椭圆:BOOL Ellipse(HDC hdc,intX1,intY1,intX2,intY2)
 10)绘制一个多边形:BOOL Polygon(HDC hdc,LPPOINT lpPoints,int nCount)


1.设置映像模式:将逻辑单位转化为设备的度量单位
  窗口:对应逻辑坐标系上程序员设定的区域
  视口:对应实际输出设备上程序员设定的区域
  我们看到的都是视口,设置映像模式实际上就是设置逻辑图像与物理输出图像间的比例.
  1) 设置映像模式SetMapMode(hdc,nMapMode)
     获取映像模式GetMapMode(hdc)
    映像模式(nMapMode)  将一个逻辑单位映射为  坐标系设定
 MM_ANISOTROPIC   系统确定   Optional(窗口:视口表现为:窗口高:视口高;窗口宽:视口宽)
 MM_HIENGLISH   0.001英寸   Y上,X右
 MM_HIMETRIC   0.01毫米   Y上,X右   
 MM_ISOTROPIC   系统确定   Optional,但X:Y=1:1(窗口:视口表现为:min{窗口高:视口高,窗口宽:视口宽})
 MM_LOENGLISH   0.01英寸   Y上,X右
 MM_LOMETRIC   0.1毫米    Y上,X右
 MM_TEXT(默认)   一个像素   Y下,X右
 MM_TWIPS   1/1440英寸   Y上,X右  
  2) 窗口区域的定义BOOL Set WindowExtEx(HDC hdc,int nHeight,int nWidth,LPSIZE lpSize)
     视口区域的定义BOOL Set ViewportExtEx(HDC hdc,int nHeight,int nWidth,LPSIZE lpSize)
  3) 视口的缺省原点和窗口的缺省原点均为(0,0)
     设置窗口原点:BOOL SetWindowOrgEx(HDC hdc,int X,int Y,LPPOINT lpPoint)
     设置视口原点:BOOL SetViewOrgEx(…)
2.获取系统画笔时的类型nPenStyle:WHITE_PAN、BLACK_PAN、DC_PAN、NULL_PAN
  创建画笔时的类型nPenStyle:PS_DASH、PS_DASHDOT、PS_DASHDOTDOT、PS_DOT、PS_INSIDEFRAME、PS_NULL、PS_SOLID
  获取系统画刷时的类型nBrushStyle: BLACK_BRUSH、DKGRAY_BRUSH、GRAY_BRUSH、HLLOW_BRUSH、LTGRAY_BRUSH、NULL_BRUSH、WHITE_BRUSH
  创建画刷时的类型nBrushStyle:HS_BDIAGONAL、HS_DIAGCROSS、HS_FDIAGNAL、HS_CROSS、HS_HORIZONTAL、HS_VERTICAL
3.PAINTSTRUCT数据结构是Windows系统提供的标识无效区域的结构,其定义如下:
  Typedef struct tagPAINTSTRUCT
  {
    HDC hdc; //设备环境句柄
    BOOL fErase; // fErase一般取真值,表示擦除无效矩形的背景
    RECT rcPaint; //无效矩形标识
    BOOL fRestore; //系统保留
    BOOL fIncUpdate; //系统保留
    BYTE rgbReserved[16]; //系统保留
  } PAINTSTRUCT;
  其中:rcPaint 为标准的RECT数据结构,其作用是标识无效矩形,该结构中包含了无效矩形的左上角和右下角的坐标。

### macOS 连接鸿蒙设备 HDC 使用指南 在 macOS 系统中,使用 HDC(HarmonyOS Device Connector)工具连接鸿蒙设备是进行应用调试和设备管理的重要步骤。以下是详细的使用指南,涵盖环境配置、设备连接、常见问题排查等内容。 #### 环境配置 1. **安装 DevEco Studio** HDC 工具通常集成在 **DevEco Studio** 中,建议使用 **DevEco Studio 5.0.0 或更高版本**。安装完成后,HDC 会自动部署在以下路径: ``` /Users/你的用户名/Library/OpenHarmony/Sdk/12/toolchains/hdc ``` 2. **配置环境变量** 为方便在终端中使用 HDC 命令,建议将 HDC 工具路径添加到系统环境变量 `PATH` 中,并设置 `HDC_SDK_PATH` 和 `HDC_SERVER_PORT`。在终端中执行以下命令: ```bash export HDC_SERVER_PORT=7035 export HDC_SDK_PATH=/Users/你的用户名/Library/OpenHarmony/Sdk/12/toolchains export PATH=$PATH:$HDC_SDK_PATH launchctl setenv HDC_SDK_PATH $HDC_SDK_PATH ``` 上述配置可确保 HDC 服务正常运行,并且在终端任意路径下都能调用 `hdc` 命令[^1]。 #### 设备连接与调试 1. **物理连接设备** 使用 USB 数据线将鸿蒙设备连接到 macOS 电脑。确保设备已开启“开发者模式”和“USB调试”选项。 2. **检查设备识别状态** 在终端中运行以下命令查看设备是否被识别: ```bash hdc list targets ``` 若设备成功连接,终端将显示设备序列号和连接状态。 3. **启动 HDC 服务** 如果 HDC 服务未自动启动,可手动执行以下命令: ```bash hdc start ``` 4. **日志查看与调试** 可通过以下命令查看设备日志,用于调试应用或系统行为: ```bash hdc target mount hdc logcat ``` 5. **安装与卸载应用** 使用 HDC 可以直接安装或卸载应用包(.hap 文件): ```bash hdc install app-release.hap hdc uninstall com.example.app ``` #### 常见问题排查 1. **找不到设备** - 确保设备 USB 调试模式已开启。 - 检查 USB 数据线是否支持数据传输。 - 重启 HDC 服务: ```bash hdc kill hdc start ``` 2. **端口冲突** HDC 默认使用端口 `7035`,若该端口被占用,可通过修改 `HDC_SERVER_PORT` 环境变量更换端口: ```bash export HDC_SERVER_PORT=7036 ``` 3. **设备无法挂载** 若执行 `hdc target mount` 失败,可能是因为设备未解锁或未授权调试。请检查设备屏幕是否弹出调试授权提示并确认。 #### 示例:完整调试流程 ```bash # 启动 HDC 服务 hdc start # 查看连接的设备 hdc list targets # 挂载设备(允许文件系统访问) hdc target mount # 安装应用 hdc install myapp.hap # 查看日志 hdc logcat # 卸载应用 hdc uninstall com.example.myapp ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值