hOLOlu LCD
C# Kayan Yazı Denemesi
This commit is contained in:
87
TextDesignerCSLibrary/DrawGradient.cs
Normal file
87
TextDesignerCSLibrary/DrawGradient.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
|
||||
namespace TextDesignerCSLibrary
|
||||
{
|
||||
public class DrawGradient
|
||||
{
|
||||
public static bool Draw(Bitmap bmp, List<Color> colors, bool bHorizontal)
|
||||
{
|
||||
if(colors.Count==0)
|
||||
return false;
|
||||
|
||||
if(colors.Count==1)
|
||||
{
|
||||
using (Graphics graph = Graphics.FromImage(bmp))
|
||||
{
|
||||
using (SolidBrush brush = new SolidBrush(colors[0]))
|
||||
{
|
||||
graph.FillRectangle(brush, 0, 0, bmp.Width, bmp.Height);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (bHorizontal)
|
||||
{
|
||||
using (Graphics graph = Graphics.FromImage(bmp))
|
||||
{
|
||||
|
||||
int gradRectNum = colors.Count - 1;
|
||||
int gradWidth = bmp.Width / gradRectNum;
|
||||
int remainder = bmp.Width % gradRectNum;
|
||||
|
||||
int TotalWidthRendered = 0;
|
||||
int WidthToBeRendered = 0;
|
||||
|
||||
for (int i = 0; i < gradRectNum; ++i)
|
||||
{
|
||||
int addRemainder = 0;
|
||||
if (i < remainder)
|
||||
addRemainder = 1;
|
||||
WidthToBeRendered = gradWidth + addRemainder;
|
||||
Rectangle rect = new Rectangle(TotalWidthRendered - 1, 0, WidthToBeRendered + 1, bmp.Height);
|
||||
using (LinearGradientBrush brush = new LinearGradientBrush(rect, colors[i], colors[i + 1], LinearGradientMode.Horizontal))
|
||||
{
|
||||
graph.FillRectangle(brush, TotalWidthRendered, 0, WidthToBeRendered, bmp.Height);
|
||||
}
|
||||
TotalWidthRendered += WidthToBeRendered;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
using (Graphics graph = Graphics.FromImage(bmp))
|
||||
{
|
||||
|
||||
int gradRectNum = colors.Count - 1;
|
||||
int gradHeight = bmp.Height / gradRectNum;
|
||||
int remainder = bmp.Height % gradRectNum;
|
||||
|
||||
int TotalHeightRendered = 0;
|
||||
int HeightToBeRendered = 0;
|
||||
for (int i = 0; i < gradRectNum; ++i)
|
||||
{
|
||||
int addRemainder = 0;
|
||||
if (i < remainder)
|
||||
addRemainder = 1;
|
||||
HeightToBeRendered = gradHeight + addRemainder;
|
||||
Rectangle rect = new Rectangle(0, TotalHeightRendered - 1, bmp.Width, HeightToBeRendered + 1);
|
||||
using (LinearGradientBrush brush = new LinearGradientBrush(rect, colors[i], colors[i + 1], LinearGradientMode.Vertical))
|
||||
{
|
||||
graph.FillRectangle(brush, 0, TotalHeightRendered, bmp.Width, HeightToBeRendered);
|
||||
}
|
||||
TotalHeightRendered += HeightToBeRendered;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user