IVsGradient.DrawGradient 方法

在指定位置绘制特定渐变。

命名空间:  Microsoft.VisualStudio.Shell.Interop
程序集:  Microsoft.VisualStudio.Shell.Interop.8.0(在 Microsoft.VisualStudio.Shell.Interop.8.0.dll 中)

语法

声明
Function DrawGradient ( _
    hwnd As IntPtr, _
    hdc As IntPtr, _
    gradientRect As RECT(), _
    sliceRect As RECT() _
) As Integer
int DrawGradient(
    IntPtr hwnd,
    IntPtr hdc,
    RECT[] gradientRect,
    RECT[] sliceRect
)

参数

  • hwnd
    类型:System.IntPtr
    [in] 包含区域的窗口的句柄将绘制具有渐变。
  • hdc
    类型:System.IntPtr
    [in] 设备上下文句柄在绘制使用了渐变。

返回值

类型:System.Int32
如果方法成功,则返回 S_OK。如果失败,它会返回一个错误代码。

备注

COM 签名

从 vsshell80.idl:

HRESULT IVsGradient::DrawGradient(
   [in] HWND hwnd,
   [in] HDC hdc,
   [in] RECT * gradientRect,
   [in] RECT * sliceRect
);

在窗口中定义的坐标系统必须定义 gradientRect 和 sliceRect 指定由处理, hwnd。

环境 SDK 支持两个非静态的渐变的类型静态和。

有关渐变是静态的,而是非静态的和其含义的信息,请参见 __GRADIENTTYPE

对静态渐变,该环境维护渐变矩形的一个永久定义,并 gradientRect 参数将被忽略。

应在矩形定义的矩形内始终包含 sliceRect 参数指定的切片矩形指定由 gradientRect 参数。

两个矩形区域 gradientRect 和 sliceRect 定义 DrawGradient 方法如何绘制在 UI 元素的一个渐变。

gradientRect 矩形调用渐变矩形或包含区域。它指定渐变无法应用的完整区域和位置。

sliceRect 矩形调用切片矩形,并且规范指定渐变实际绘制的区域。

蒙板渐变来完成。使用不同大小的渐变和切片矩形,切片矩形在渐变矩形包含。在这种情况下,只有部分的 UI 元素绘制具有渐变,但是,渐变模式保留,就象整个渐变矩形绘制的。

例如,绘制在 100 的 10 像素宽的帧 x 100 像素宽区域可以执行

  1. 定义与一 RECT 结构的一个渐变矩形与一个左上角位于 (0,0) 和一个右下角的左上角位于 (100,100)。

  2. 定义四个 10 像素宽的切片 RECT 结构,

    • 与一个左上角位于 (0,0) 和一个右下角位于 (100,10)

    • 与一个左上角位于 (0,0) 和一个右下角位于 (10,100)

    • 与一个左上角位于 (90,0) 和一个右下角位于 (100,100)

    • 与一个左上角位于 (0,90) 和一个右下角位于 (100,10)

  3. 调用 IVsGradient.DrawGradient 四次,一次的每个切片矩形和始终使用相同的渐变矩形。

此外,矩形绘制可能不令人满意的某一情况,例如,在绘制带圆角的控件,鲨鱼飞翅选项或不容易被剪辑也不被屏蔽的非矩形区域时。

在这些情况下, Vspackage 应创建绘制的特定渐变画笔基于 GetGradientVector 方法返回的颜色或矢量。

例如,复杂的文件选项可以构造选项卡的三个元素绘制--飞翅、文本和结束--如果元素通过颜色替换和拉伸要绘制。特定颜色的每个像素将 GetGradientVector 返回的数组的元素替换相应其在该级别的轴的位置。

有关更多信息,请参见 How to: Use Visual Studio Gradient Support

.NET Framework 安全性

请参见

参考

IVsGradient 接口

Microsoft.VisualStudio.Shell.Interop 命名空间