.Net
C# - System.Drawing.Color의 Magenta Color 버그
Dokon Jang
2015. 6. 16. 17:51
반응형
C#에서 제공하는 다양한 색상등이 정의되어 있고, 매우 유용합니다.
하지만 Color.Magenta 색상에는 버그가 있는 것으로 생각됩니다.
예를 들어 Color.Magenta 색상으로 단색의 Bitmap을 생성하고, Bitmap을 여러 Control(Picture Box / Tool Strip Button 등)에 함께 사용하면 이미지가 표시되지 않는 현상이 발생합니다.
(다른 색상의 경우 정상적으로 표시됩니다.)
- 반드시 Magenta 색상을 사용해야 한다면 아래의 코드를 적용해서 사용하시길 바랍니다.
(다른 색상에도 문제가 있는지 전수 검사를 하지 않았으면, 동일 현상이 발생한다면 아래의 코드를 참고하세요.)
Color color = Color.FromName("Magenta");
color = Color.FromArgb(color.R - 1, color.G, color.B);
- Color.Magenta 색상에 대한 버그 테스트 전체 소스입니다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TEST
{
public partial class Form1 : Form
{
Bitmap bitmapMagenta;
Bitmap bitmapBlue;
public Form1()
{
InitializeComponent();
}
// Button Click 이벤트
private void btnMagenta_Click(object sender, EventArgs e)
{
if (bitmapMagenta == null)
{
Color color = Color.FromName("Magenta");
//color = Color.FromArgb(color.R - 1, color.G, color.B);
// 이미지 생성
bitmapMagenta = new Bitmap(50, 50);
for (int i = 0; i < bitmapMagenta.Width; i++)
{
for (int j = 0; j < bitmapMagenta.Height; j++)
{
bitmapMagenta.SetPixel(i, j, color);
}
}
}
pictureBox.Image = bitmapMagenta;
toolStripButton.Image = bitmapMagenta;
}
// Button Click 이벤트
private void btnBlue_Click(object sender, EventArgs e)
{
if (bitmapBlue == null)
{
Color color = Color.FromName("Blue");
// 이미지 생성
bitmapBlue = new Bitmap(50, 50);
for (int i = 0; i < bitmapBlue.Width; i++)
{
for (int j = 0; j < bitmapBlue.Height; j++)
{
bitmapBlue.SetPixel(i, j, color);
}
}
}
pictureBox.Image = bitmapBlue;
toolStripButton.Image = bitmapBlue;
}
}
}
반응형