私はMicrosoft Vision APIを使い、C#を学び、Visionオブジェクトのプロパティの1つはイメージの「アクセントカラー」です。C#LinearGradientBrushビットマップを縦方向に繰り返す
解析された一連の画像から、リニアグラデーションで注文した色を表示したい - 青色が半分を占めるため、ほとんどの画像が青色であることをユーザーに示すことができるためですグラデーションなど
私は色相によって色を注文しており、線形勾配を生成することができるので、私はビットマップを塗りつぶしています。
しかし、デフォルトでは勾配が水平になっている、と私は垂直を必要とする - ので、私は、実際の勾配の罰金を回転させるが、全体の四角形を埋めるようには見えないLinearGradientBrush.RotateTransform(90)を使用しました、それが繰り返されます。これは私が結果として取得していますものです:
は、どのように私は私のビットマップのためのRectangleオブジェクトの全体の高さをいっぱいに垂直てLinearGradientを作成するのですか?ここで
は私のコードです:読み取りおよび任意の助け
private Bitmap CreateColorGradient(System.Drawing.Rectangle rect, System.Drawing.Color[] colors)
{
Bitmap gradient = new Bitmap(rect.Width, rect.Height);
LinearGradientBrush br = new LinearGradientBrush(rect, System.Drawing.Color.White, System.Drawing.Color.White, 0, false);
ColorBlend cb = new ColorBlend();
// Positions
List<float> positions = new List<float>();
for (int i = 0; i < colors.Length; i++) positions.Add((float)i/(colors.Length - 1));
cb.Positions = positions.ToArray();
cb.Colors = colors;
br.InterpolationColors = cb;
br.RotateTransform(90);
using (Graphics g = Graphics.FromImage(gradient))
g.FillRectangle(br, rect);
return gradient;
}
おかげ - あなたはより良い行うことができる私のコードで何かを見た場合にも、それを指摘してください、それは私が:)
を学ぶことができます
ブリリアントこれは素晴らしいですね! –
問題ありません。 WrapModeに関する最後の発言を見てください。これはしばしば便利です。 – TaW