저는 VB.NET WinForms 응용 프로그램이 있습니다. GDI +를 사용하여 패널에 프로그래밍 방식으로 모양을 그리는 중입니다. 이제 저는 그 패널의 작은 직사각형 부분을 어떤 식 으로든 강조하고 싶습니다. 강조 표시된 영역이 많이 움직입니다. 너무 많은 처리가 필요하고 깜박임이 발생하기 때문에 전체 패널을 다시 그리기를 원하지 않습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?패널 영역 강조 표시
감사합니다.
저는 VB.NET WinForms 응용 프로그램이 있습니다. GDI +를 사용하여 패널에 프로그래밍 방식으로 모양을 그리는 중입니다. 이제 저는 그 패널의 작은 직사각형 부분을 어떤 식 으로든 강조하고 싶습니다. 강조 표시된 영역이 많이 움직입니다. 너무 많은 처리가 필요하고 깜박임이 발생하기 때문에 전체 패널을 다시 그리기를 원하지 않습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?패널 영역 강조 표시
감사합니다.
투명 패널을 기존 패널의 하위 패널로 추가 (및 고정) 한 다음 투명 패널에서 강조 표시 할 수 있습니까?
public partial class Form1 : Form
{
private Panel pan = new Panel();
private Panel trans = new Panel();
private bool clicked { get; set; }
private Point mouse { get; set; }
public Form1()
{
InitializeComponent();
this.Load += new EventHandler(Form1_Load);
}
public void Form1_Load(object sender, EventArgs e)
{
pan.Dock = DockStyle.Fill;
pan.BackColor = Color.White;
trans.Dock = DockStyle.Fill;
trans.BackColor = Color.FromArgb(0, 0, 0, 0);
pan.Paint += new PaintEventHandler(DrawSomeShapes);
trans.MouseClick += new MouseEventHandler(trans_MouseClick);
trans.Paint += new PaintEventHandler(DrawHighlight);
pan.Controls.Add(trans);
this.Controls.Add(pan);
trans.BringToFront();
}
public void DrawSomeShapes(object sender, PaintEventArgs e)
{
var g = e.Graphics;
var p = new Pen(Color.Black, 1F);
g.DrawRectangle(p, new Rectangle(0, 0, 100, 100));
g.DrawRectangle(p, new Rectangle(20, 20, 50, 50));
g.DrawRectangle(p, new Rectangle(10, 50, 100, 25));
g.DrawRectangle(new Pen(Color.Red, 1F), new Rectangle(new Point(50, 50), new Size(50, 50)));
}
public void DrawHighlight(object sender, PaintEventArgs e)
{
if (clicked)
{
var g = e.Graphics;
var b = new SolidBrush(Color.FromArgb(50, 50, 50, 50));
g.FillRectangle(b, mouse.X, mouse.Y, 50, 50);
clicked = false;
}
}
public void trans_MouseClick(object sender, MouseEventArgs e)
{
mouse = e.Location;
trans.Invalidate();
clicked = true;
}
}
그게 효과가 있어요. 감사합니다. . – mcu
는 "많은 주위 이동합니다 강조 영역"에 의해 무엇을 의미합니까 :
여기 아주 기초적인 예입니다? 마우스로 잡으면 반투명 한 일종의 고정 사각형입니까? 아니면 mousedown-mousemove-mouseup 액션을 통해 해당 지역을 강조하고 있습니까? 더 많은 컨텍스트를 부탁드립니다. – LarsTech