IVsGradient.DrawGradient(IntPtr, IntPtr, RECT[], RECT[]) Yöntem

Tanım

Belirtilen bir konumda verilen degradeyi çizer.

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

Parametreler

hwnd
IntPtr

nativeint

'ndaki Degradeyle boyanmak üzere bölgeyi içeren pencerenin tutamacı.

hdc
IntPtr

nativeint

'ndaki Degradeyi çizerken kullanılan cihaz bağlamının tanıtıcısı.

gradientRect
RECT[]

'ndaki Degradenin uygulanabileceğini tam kapsam ve geometriyi tanımlayarak kapsayıcı dikdörtgen veya kapsayan bölge.

sliceRect
RECT[]

'ndaki Bir degradenin gerçekten boyanmış olduğu bölge tanımlayarak dilim dikdörtgeni.

Döndürülenler

Int32

Yöntem başarılı olursa, döndürür S_OK . Başarısız olursa, bir hata kodu döndürür.

Açıklamalar

COM Imzası

Vsshell80. IDL adresinden:

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

Hem hem de gradientRect sliceRect tanıtıcı tarafından belirtilen pencere tarafından tanımlanan koordinat sisteminde tanımlanmalıdır hwnd .

Ortam SDK 'Sı, statik ve statik olmayan iki tür degradeleri destekler.

Hangi degradelerin statik ve statik olmayan ve bunun etkilerine ilişkin bilgiler için, bkz __GRADIENTTYPE ..

Statik degradeler için ortam, gradyan dikdörtgeninin kalıcı bir tanımını korur ve gradientRect parametresi yok sayılır.

Parametresi tarafından belirtilen dilim dikdörtgeni sliceRect her zaman parametresi tarafından belirtilen dikdörtgenle tanımlanan dikdörtgen içinde bulunmalıdır gradientRect .

İki dikdörtgen bölge gradientRect ve sliceRect yöntemin bir DrawGradient Kullanıcı arabirimi öğesi üzerinde bir degradeyi nasıl boyayacağını tanımlar.

gradientRectDikdörtgen gradyan dikdörtgeni veya içeren bölge olarak adlandırılır. Bir degradenin uygulanmasındaki tam kapsamı ve konumu belirtir.

sliceRectDikdörtgen, dilim dikdörtgeni olarak adlandırılır ve belirtim, degradenin gerçekten boyanmış olduğu bölgeyi belirtir.

Degradelerin maskelenme, dilim dikdörtgeninin gradyan dikdörtgende bulunduğu farklı boyutta gradyan ve dilim dikdörtgenleri kullanılarak gerçekleştirilebilir. Bu durumda, bir UI öğesinin yalnızca bir bölümü bir gradyan ile boyanmıştır, ancak gradyan deseninin tamamı, gradyan dikdörtgeninin tamamı boyandığı gibi korunur.

Örneğin, 100 100 piksel genişliğinde bir kare için 10 piksel geniş bir kareyi boyamak

  1. ( RECT 0, 0) ve sağ alt köşedeki (100.100) sol üst köşenin bulunduğu bir yapıyla birlikte bir gradyan dikdörtgeni tanımlama.

  2. 4 10 piksel geniş dilim RECT yapıları tanımlama,

    • (0, 0) ve sağ alt köşedeki (100, 10) bir sol üst köşesinden

    • (0, 0) ve sağ alt köşedeki (10.100) bir sol üst köşesinden

    • (90, 0) ve sağ alt köşedeki (100.100) bir sol üst köşesinden

    • (0, 90) ve sağ alt köşedeki (100, 10) bir sol üst köşesinden

  3. IVsGradient.DrawGradienther dilim dikdörtgeni için bir kez ve her zaman aynı gradyan dikdörtgeni kullanarak dört kez çağırma.

Buna ek olarak, bir denetimin yuvarlatılmış köşeler, bir parçalama sekmesi veya kolayca kırpılamayan veya maskelenmemiş dikdörtgen olmayan bir bölge olarak boyanma gibi, dikdörtgen boyama belirli bir durumda tatmin edici olmayabilir.

Bu durumlarda, VSPackages, yöntem tarafından döndürülen renklerin dizisine veya vektörlerine göre belirli bir degradeyi boyamak için fırça oluşturur GetGradientVector .

Örneğin, gelişmiş dosya sekmeleri, sekme için üç bileşen (Fin, metin alanı ve son--bileşenlerin renk değişikliği aracılığıyla çizileceği ve uzatarak) eklenerek çizilmiştir. Belirli bir rengin her pikseli, GetGradientVector yatay eksen üzerindeki konumuyla ilgili olarak döndürülen dizideki öğe ile değiştirilebilir.

Daha fazla bilgi için bkz. nasıl yapılır: Visual Studio gradyan desteğini kullanma.

Şunlara uygulanır