사용자 컨트롤 또는 폼에 등 문자열, 선 그리기, 3.5 .NET :윈폼, 나는이 (가) 다음 않았다
public partial class Form1 : Form
{
public UserControl uc = new UserControl();
private void Form1_Load(object sender, EventArgs e)
{
uc.Width = 100;
uc.Height = 20;
uc.BackColor = Color.White;
uc.Paint += new PaintEventHandler((object s, PaintEventArgs pe) => {
Graphics g = ((UserControl)s).CreateGraphics();
g.DrawString("hello", this.Font, Brushes.Black, 0, 0);
});
uc.Visible = true;
this.Controls.Add(uc);
Bitmap bmp = new Bitmap(uc.Width, uc.Height);
uc.DrawToBitmap(bmp, uc.ClientRectangle);
bmp.Save("c:\\my_image.png", System.Drawing.Imaging.ImageFormat.Png);
}
private void button1_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(uc.Width, uc.Height);
uc.DrawToBitmap(bmp, uc.ClientRectangle);
bmp.Save("c:\\my_image.png", System.Drawing.Imaging.ImageFormat.Png);
}
}
을 지금, 나는이 "안녕하세요"문자열 양식에 제대로 표시 볼 수 있지만, my_image .png 파일에는 빈 흰색 배경 만 표시됩니다. button1을 클릭하면 동일한 결과가 나타납니다. 왜? VB.NET에서 위의 코드를 작성하면 더 혼란스러운 일이 발생합니다. 버튼 1을 클릭하면 흰색 배경도 사라집니다. uc는 폭과 높이가 150px 인 새롭게 생성 된 것처럼 작동합니다. 내가 무엇이 누락 되었습니까?
당신 말이 맞습니다. 원래 Paint 이벤트에 가입하지 않고 문자열을 그리려고했습니다. 그래서 CreateGraphics를 사용했고 페인트 이벤트로 전환했을 때 이벤트 arg를 사용하는 것을 잊었습니다. – synergetic