Diskuze: Kreslení ve WPF
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Mysliš jako barevný přechod?
Tak já jsem v mé aplikaci využil tohoto kódu:
Dim img As New Bitmap(LibovolnéPole1.Width, LibovolnéPole2.Height)
Dim brush As New Drawing.Drawing2D.LinearGradientBrush(New PointF(0, 0), New
PointF(img.Width, img.Height), MístoZobrazení1.BackColor,
MístoZobrazení2.BackColor)
Dim gr As Graphics = Graphics.FromImage(img)
gr.FillRectangle(brush, New RectangleF(0, 0, img.Width, img.Height))
LibovolnéPoleZobrazení.BackgroundImage = img
Tenhle kód ti vlastně určuje odkud se berou barvy (Jaké má hodnoty) a vykresluje to do určitého místa, které se ty určíš.
No jo, tohle sice funguje, ale je to jen pro dvě barvy, jenže já bych chtěl, aby ty barvy byly tři a aby šla každá z jiného místa
Ahoj, google si použít zkoušel ? jinak
ColorBlend cb = new ColorBlend();
LinearGradientBrush br = new LinearGradientBrush(this.ClientRectangle, Color.Black, Color.Black, 0f, false);
cb.Positions = new[] { 0, 1/4f, 1/2f, 1 };
cb.Colors = new[] { Color.Green, Color.Yellow, Color.Blue, Color.Red };
br.InterpolationColors = cb;
br.RotateTransform(30);
g.FillRectangle(br, this.ClientRectangle);
barviček si tam můžeš naházet kolik chceš..
Ahoj, díky za radu, ale hází mi to chybu u ColorBlend. Chybí namespace. Na netu jsem našel, že je z System.Drawing.Drawing2D, kde je taky LinearGradientBrush, který mi ale chybu nehází. Tak tomu nerozumím. A ještě další chyba je u br, ClientRectangle a g. Hádám, že g bude Graphics a ClientRectangle nějaký libovolný čtverec. Jenom nemohu přijít co je to br.
Promiň spletl jsem se...
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<LinearGradientBrush.GradientStops>
<GradientStop Color="Green" Offset="0"/>
<GradientStop Color="Yellow" Offset="0.5"/>
<GradientStop Color="Red" Offset="1"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
v XAML, ale tento kód musí být v background elementu(třeba grid), jinak je tu na to celý tutoriál http://www.itnetwork.cz/…harp-pozadi/
Na LinearGradientBrush jsem taky koukal a je tam problém, že barví jedním směrem. Právě bych potřeboval, aby to vypadalo jako na tomto obrázku (třeba vybírání barvy ve VS), aby ty barvy šly každá z jiného rohu čtverce. Taky jsem zkoušel dát ty brushe dva, jenže se mi to nepodařilo.
<Grid>
<Grid>
<Grid.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<LinearGradientBrush.GradientStops>
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="Red" Offset="1"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Grid.Background>
</Grid>
<Grid>
<Grid.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStop Color="Transparent" Offset="0"/>
<GradientStop Color="Black" Offset="1"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Grid.Background>
</Grid>
</Grid>
Toto snad stačí..
Jak to funguje snad už tušíš podle minulýho kódu..
No jo, transparent. To mě nenapadlo. Díky už to vypadá tak, jak jsem si představoval
Zobrazeno 12 zpráv z 12.