IVsGradient.DrawGradient(IntPtr, IntPtr, RECT[], RECT[]) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Zeichnet einen angegebenen Farbverlauf an einer angegebenen Position.
public:
int DrawGradient(IntPtr hwnd, IntPtr hdc, cli::array <Microsoft::VisualStudio::OLE::Interop::RECT> ^ gradientRect, cli::array <Microsoft::VisualStudio::OLE::Interop::RECT> ^ sliceRect);
public int DrawGradient (IntPtr hwnd, IntPtr hdc, Microsoft.VisualStudio.OLE.Interop.RECT[] gradientRect, Microsoft.VisualStudio.OLE.Interop.RECT[] sliceRect);
abstract member DrawGradient : nativeint * nativeint * Microsoft.VisualStudio.OLE.Interop.RECT[] * Microsoft.VisualStudio.OLE.Interop.RECT[] -> int
Public Function DrawGradient (hwnd As IntPtr, hdc As IntPtr, gradientRect As RECT(), sliceRect As RECT()) As Integer
Parameter
- hwnd
- IntPtr
[in] Handle eines Fensters, das den mit einem Farbverlauf zu zeichnenden Bereich enthält.
- hdc
- IntPtr
[in] Handle des Gerätekontexts, wenn beim Zeichnen des Farbverlaufs verwendet wird.
- gradientRect
- RECT[]
[in] Der Farbverlauf oder der enthaltende Bereich, der den vollständigen Bereich und die Geometrie definiert, über die der Farbverlauf angewendet werden kann.
- sliceRect
- RECT[]
[in] Das Segment-Rechteck, das den Bereich definiert, über dem ein Farbverlauf tatsächlich gezeichnet wird.
Gibt zurück
Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben. Bei einem Fehler wird ein Fehlercode zurückgegeben.
Hinweise
COM-Signatur
Aus vsshell80. idl:
HRESULT IVsGradient::DrawGradient(
[in] HWND hwnd,
[in] HDC hdc,
[in] RECT * gradientRect,
[in] RECT * sliceRect
);
Sowohl gradientRect als auch sliceRect müssen im Koordinatensystem definiert werden, das durch das durch das handle angegebene Fenster definiert wird hwnd .
Das Environment SDK unterstützt zwei Typen von Farbverläufen statisch und nicht statisch.
Informationen dazu, welche Farbverläufe statisch und welche nicht statisch sind und welche Auswirkungen dies haben, finden Sie unter __GRADIENTTYPE .
Bei statischen Farbverläufen behält die Umgebung eine permanente Definition des Farbverlaufs Rechtecks bei, und der- gradientRect Parameter wird ignoriert.
Das durch den-Parameter angegebene Slice-Rechteck sliceRect sollte immer innerhalb des Rechtecks enthalten sein, das durch das durch den-Parameter angegebene Rechteck definiert wird gradientRect .
Die zwei rechteckigen Bereiche gradientRect und sliceRect definieren, wie die- DrawGradient Methode einen Farbverlauf für ein UI-Element zeichnet.
Das gradientRect Rechteck wird als Farbverlaufs Rechteck oder enthaltender Bereich bezeichnet. Hiermit werden der vollständige und der Speicherort angegeben, an dem ein Farbverlauf angewendet werden kann.
Das sliceRect Rechteck wird als Slice-Rechteck bezeichnet, und die Spezifikation gibt den Bereich an, in dem der Farbverlauf tatsächlich gezeichnet wird.
Die Maskierung von Farbverläufen kann mithilfe von unterschiedlich großen Farbverläufen und Slice-Rechtecke erreicht werden, wobei das Slice-Rechteck im Farbverlaufs Rechteck enthalten ist. In diesem Fall wird nur ein Teil eines UI-Elements mit einem Farbverlauf gezeichnet, das Farbverlaufs Muster wird jedoch beibehalten, als ob das gesamte Verlaufs Rechteck gezeichnet wurde.
Beispielsweise könnte das Zeichnen eines 10-Pixel-breiten Frames in einem 100-100 Mal-Pixel weiten Bereich durch
Definieren eines Farbverlaufs Rechtecks mit einer
RECTStruktur mit Ecken mit einer oberen linken Ecke bei (0,0) und einer unteren rechten Ecke um (100.100).Definieren von 4 10 Pixel weiten Slice-
RECTStrukturen,eine mit einer oberen linken Ecke bei (0,0) und einer unteren rechten Ecke bei (100, 10)
eine mit einer oberen linken Ecke bei (0,0) und einer unteren rechten Ecke um (10.100)
eine mit einer oberen linken Ecke an (90, 0) und einer unteren rechten Ecke um (100.100)
eine mit einer oberen linken Ecke bei (0, 90) und einer unteren rechten Ecke bei (100, 10)
IVsGradient.DrawGradientvier Mal aufrufen, einmal für jedes Slice-Rechteck und immer das gleiche Farbverlaufs Rechteck.
Außerdem kann das rechteckige zeichnen unter bestimmten Umständen nicht zufriedenstellend sein, z. h. beim Zeichnen eines Steuer Elements mit abgerundeten Ecken, bei einer Shark-Fin-Registerkarte oder bei einem nicht rechteckigen Bereich, der nicht einfach abgeschnitten oder maskiert werden kann.
In diesen Fällen sollten VSPackages den Pinsel zum Zeichnen eines angegebenen Farbverlaufs basierend auf dem Array oder dem Vektor von Farben erstellen, die von der-Methode zurückgegeben werden GetGradientVector .
Beispielsweise könnten komplizierte Datei Registerkarten gezeichnet werden, indem die drei Komponenten für die Registerkarte erstellt werden: die FIN, der Textbereich und das Ende, in der die Komponenten durch Farb Ersetzung gezeichnet werden, und Streckung. Jedes Pixel einer bestimmten Farbe wird durch das Element im Array ersetzt, das durch die GetGradientVector entsprechende Position auf der horizontalen Achse zurückgegeben wird.
Weitere Informationen finden Sie unter Gewusst wie: Verwenden von Visual Studio-Farbverlaufs Unterstützung.