跳到主要内容

使用 VBA 在屏幕上画椭圆

如果你想使用 VBA 在屏幕的任意位置画椭圆,可以使用 Ellipse 函数。椭圆的中心是指定边界矩形的中心。椭圆使用当前画笔绘制轮廓并使用当前画笔填充。

Ellipse 函数语法

Ellipse(
  [in] HDC hdc,
  [in] int left,
  [in] int top,
  [in] int right,
  [in] int bottom
);

Ellipse 函数参数

Ellipse 函数的参数如下表所示:

参数 说明
[in] hdc 设备上下文的句柄。
[in] left 边界矩形左上角的 x 坐标(以逻辑坐标为单位)。
[in] top 边界矩形左上角的 y 坐标(以逻辑坐标为单位)。
[in] right 边界矩形右下角的 x 坐标(以逻辑坐标为单位)。
[in] bottom 边界矩形右下角的 y 坐标(以逻辑坐标为单位)。

如果:

右下角的 x 坐标 - 左上角的 x 坐标 = 右下角的 y 坐标 - 左上角的 y 坐标

则画圆,反之画椭圆。

示例

以下示例用 Ellipse 函数在屏幕指定位置画一个圆。

#If VBA7 And Win64 Then
    Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
    Declare PtrSafe Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal nLeftRect As Long, ByVal nTopRect As Long, ByVal nRightRect As Long, ByVal nBottomRect As Long) As Long
#Else
    Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
    Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal nLeftRect As Long, ByVal nTopRect As Long, ByVal nRightRect As Long, ByVal nBottomRect As Long) As Long
#End If

Sub EllipseDemo()
    ' https://oacourse.com/excel/draw-an-ellipse-on-the-screen-using-vba/
    Dim hdc As Long
    ' 获取主屏幕的句柄
    hdc = GetDC(0)
    ' 在屏幕指定位置画圆
    Ellipse hdc, 100, 200, 400, 500
    ' 释放句柄
    ReleaseDC 0, hdc
End Sub

评论

您的电子邮件地址不会显示出来。*号为必填项。