Problemer med gdi+
Jeg har lavet override onpaint på en groupbox, inde i den groupbox tegner jeg så et rektangel. Det virker også som det skal. Så inde i det rektangel skal jeg så tegne et billede, som jeg tager fra en lokal jpg fil der ligger på min computer. billedet bliver også vist, men det står flimre. Jeg har lavet en messagebox der hvor jeg kalder den metode som tegner billedet, det viser sig messageboxen kommer frem et utal af gange, som om den var i en uendelig løkke. Hva er der galt, her er hele min klasseclass MsPaintGrpBox : GroupBox
{
Bitmap Bmp;
RectangleF BMPContainer;
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
//A4 paper
//1184 x 0832 pixels (0296 x 0208 mm)
//I'll divided it with 1184 / 7 = 169
// 832 / 7 = 119
using (Pen pen = new Pen(Color.Black))
{
Rectangle rectangle = e.ClipRectangle;
rectangle.X = 8;
rectangle.Y = 20;
rectangle.Width = 119;
rectangle.Height = 169;
e.Graphics.DrawRectangle(pen, rectangle);
}
Graphics G = e.Graphics;
if (Bmp != null)
{
G.DrawImage(Bmp, BMPContainer);
}
if (File.Exists(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Configuration.xml")))
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Configuration.xml"));
XmlNode logo = xmlDocument.SelectSingleNode("/FirmaData/Logo/LogoSti");
if (logo != null && logo.HasChildNodes)
{
Bmp = new Bitmap(logo.ChildNodes[0].InnerText);
MessageBox.Show(Bmp.Height.ToString()); //Test messagebox
MessageBox.Show(Bmp.Width.ToString()); //Test messagebox
DrawBMP();
}
}
}
private void DrawBMP()
{
if (Bmp != null)
{
Graphics G = this.CreateGraphics();
GraphicsUnit GU = G.PageUnit;
BMPContainer = Bmp.GetBounds(ref GU);
this.Invalidate(Rectangle.Round(BMPContainer));
G.Dispose();
}
}
}
