현재 C# 비트 맵 및 그래픽을 사용하여 간단한 이미지 조작기를 코딩하고 있습니다. 나는 costum 투명한 elemt를 사용하고 있습니다. 내 Draw-Method에서 그림을 설정하여 그림을 설정하여 컨트롤을 업데이트합니다.C# 그래픽 픽셀 덮어 쓰기 강제
ImageAttributes attr = new ImageAttributes();
attr.SetColorKey(this.transpKey, this.transpKey);
Rectangle dstRect = new Rectangle(0, 0, this.image.Width, this.image.Height);
e.Graphics.DrawImage(this.image, dstRect, 0, 0, this.image.Width, this.image.Height, GraphicsUnit.Pixel, attr);
e.Graphics.Dispose();
이제 일부 픽셀을 지우는 기능이 필요합니다. BackgroindImage에서 양식과 그림을 사용하여 TransparencyKey-Prperty를 사용하여 픽셀을 "지울"수 있습니다. 그러나이 복종은 나의 복장 조절에 존재하지 않는다. 그것이 "attr.SetColorKey (this.transpKey, this.transpKey);"를 사용하는 이유입니다.하지만 문제가 있습니다. 픽셀을 투명하게 만들고 언더 라이닝하는 픽셀을 볼 수 있습니다.
C#을 사용하여 픽셀을 남겨 두지 않고 강제로 교체하는 방법을 알고 있습니까? 아니면 누구든지 내 문제에 대한 해결책을 알고 있습니까?
읽고 생각하고 어쩌면 도움을 주셔서 감사합니다.
// 편집 : 이제 "e.Graphics.CompositingMode = CompositingMode.SourceCopy;"를 사용할 수 있다는 것을 알았습니다. 픽셀을 교체해야한다고 설정합니다. 그러나 그 후에는 투명성이 파괴됩니다. 결과도 같습니다. 아무것도 지워지지 않았습니다. 어떤 해결책?
100 % 확신 할 수는 없지만 e.Graphics.DrawImage를 호출 한 후 덮어 쓰려는 픽셀을 덮어 쓰려면 크기가 1x1 인 사각형으로 e.Graphics.DrawRectangle을 호출 할 수 없습니다. e.Graphics.Dispose를 부르시겠습니까? – ekolis
아니요. 먼저 지우고 싶은 텍스트, 선, 사각형 또는 픽셀이 이미 과도하게 렌더링되어 있으므로 도움이되지 않습니다. 그리고 그것이 문제입니다. 그려진 픽셀을 지울 수는 없습니다. 고무를 사용하는 것처럼 픽셀을 지나치게 많이 사용하여 ImageAttribute를 사용하여 투명하게 만들려고 시도했습니다. 그러나 위에서 말한 문제가 있습니다. 삭제하려는 픽셀이 지워지지 않습니다. – David