-4
문제 : 흰색 배경에 개체 사진이 있습니다. 이 개체의 정확한 모양을 가진 PictureBoxes가 필요하지만이 개체가 선험적으로 어떻게 보이는지 알 수 없습니다. 이것에그림에 따라 모양이있는 그림 상자를 만드는 방법
문제 : 흰색 배경에 개체 사진이 있습니다. 이 개체의 정확한 모양을 가진 PictureBoxes가 필요하지만이 개체가 선험적으로 어떻게 보이는지 알 수 없습니다. 이것에그림에 따라 모양이있는 그림 상자를 만드는 방법
내 솔루션은 새로운 클래스 :
당신이 모양이 다시 만들어집니다 객체를 무효화 할 때마다class ShapedPictureBox : PictureBox
{
public ShapedPictureBox()
{
}
public Color transparentColor = Color.White;
public void updateShape()
{
if(this.Image = null) return;
Bitmap bitmap = new Bitmap(this.Image);
System.Drawing.Drawing2D.GraphicsPath graphicsPath = new System.Drawing.Drawing2D.GraphicsPath();
for(int x = 0; x < this.Image.Width; x++)
for(int y = 0; y < this.Image.Height; y++)
if(transparentColor != bitmap.GetPixel(x, y))
graphicsPath.AddRectangle(new Rectangle(new Point(x, y), new Size(1, 1)));
this.Region = new Region(graphicsPath);
}
}
. 나는이 해결책이 전혀 효과가 없다는 것을 알고 있지만 발견 한 유일한 것입니다. 누군가가 도움이 되었기를 바랍니다.
더 효율적이고 효과적인 아이디어가 있다면 알려 주시기 바랍니다.
단순히 bitmap.MakeTransparent (Color.White)를 사용하십시오. –
적어도 개선하기 위해 모든 무효화로 영역 생성을 트리거하지 않는 것입니다! 무효화는 귀하가 제어하지 않습니다. 시스템이 필요하다고 생각할 때마다 폼이 최소화되거나 화면 테두리를 넘은 것처럼 복원됩니다. 대신 이미지를 변경하거나 LoadCompleted가 트리거하도록 할 수있는 함수에 넣으십시오! - 내가 보여준 게시물에서 해결책을 시도 했니? – TaW
이미지의 모든 픽셀에 대해'GetPixel() '을 호출하면, 무효화 할 때마다 솔루션으로 제안하는 것이 우스꽝 스럽습니다! '1x1' 사각형은 그것을 더욱 악화시킵니다. –