.net рисования в растровое изображение с использованием FillRectangle не удается, когда пурпурный - PullRequest
1 голос
/ 06 декабря 2010
var bmp = new Bitmap(16, 16);
var gBmp = System.Drawing.Graphics.FromImage(bmp );
Color col = Color.FromArgb(pdmsCol.Red, pdmsCol.Green, pdmsCol.Blue);
gBmp.FillRectangle(new SolidBrush(col), new Rectangle(0, 0, 16, 16));
mColourPopupContainer.Image = bmp;

Использование приведенного выше кода рисует прямоугольник в моем элементе управления для данного цвета. Это работает нормально, если цвет не пурпурный, и в этом случае он кажется прозрачным. Я думаю, это как-то связано с растровым изображением пурпурного, как прозрачного. Как мне отключить это поведение?

mColourPopupContainer - это UserControl (настраиваемая палитра цветов).

Ответы [ 2 ]

2 голосов
/ 06 декабря 2010

Необходимо установить для свойства Form.TransparencyKey цвет, отличный от пурпурного. Недвижимость:

Получает или задает цвет, который будет представлять прозрачные области формы.

По умолчанию это пурпурный цвет, следовательно, ваша проблема. Если вы установите для него другой цвет, который не должен отображаться где-либо еще в вашей форме, проблема должна исчезнуть.

0 голосов
/ 07 декабря 2010

Мое текущее решение не очень хорошее: определить, когда используется пурпурный , и изменить его на не пурпурный .

      var col = Color.FromArgb(r, g, b);
      if (r==255 && g==0 && b==255 ) col = Color.FromArgb(r-1, g, b); // Don't use Megenta as it can be treated as transparent
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...