2014-11-25 1 views
0

Я пытаюсь нарисовать 2 прямоугольника 1 в зеленом канале 2-й в красном канале растрового изображения.C# чертежный прямоугольник в определенном цветовом канале

Это код:

Bitmap bitmap_guess = new Bitmap(C_PALETTE_X_PIXEL_MAX, C_PALETTE_Y_PIXEL_MAX, PixelFormat.Format24bppRgb); 
Graphics graphics = Graphics.FromImage(bitmap_guess); 
Rectangle box_rect = new Rectangle(0, 0, C_BOX_PIXELS_WIDTH, C_BOX_PIXELS_HEIGHT); 

matrix = new Matrix(); 
matrix.RotateAt(thc, new System.Drawing.PointF(xc, yc), MatrixOrder.Prepend); 
graphics.Transform = matrix; 
graphics.FillRectangle(new SolidBrush(Color.Green), xc, yc, box_rect.Width, box_rect.Height); 

matrix = new Matrix(); 
matrix.RotateAt(th, new System.Drawing.PointF(x, y), MatrixOrder.Prepend); 
graphics.Transform = matrix; 
graphics.FillRectangle(new SolidBrush(Color.Red), x, y, box_rect.Width, box_rect.Height); 

Проблема заключается в том, что когда я рисую 2-й прямоугольник красного цвета переписывает 1st прямоугольники перекрывающихся пикселей на 0-х. Я бы хотел, чтобы прямоугольники меняли цвет, когда они перекрываются, вместо того, чтобы явно перезаписывать предыдущие значения пикселей. IE - рисовать в одном канале, а не все 3.

Я специально ищу для этого графическую операцию.

С наилучшими пожеланиями, Laov

ответ

0

Это может помочь вам Merging two images in C#/.NET

Затем вы могли бы нарисовать каждый прямоугольник в свое собственное изображение и объединить результаты ...

+0

Я взял быстрый взгляд, однако я мог не найти ничего, что означало бы, что была передана только информация о одном цветном канале. Кажется, что каждый из предложений просто вставляет одно изображение поверх другого. – Laov