private void panImage_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawImageUnscaled(BackgroundBitmap, 0, 0); lock (DrawParticles) { foreach (Particle drawpart in DrawParticles) { drawpart.Draw(e.Graphics); } } lock (imagesdraw) { foreach (drawimagedata loopdata in imagesdraw) { // e.Graphics.DrawImage(loopdata.DrawImage, loopdata.Location); loopdata.Draw(e.Graphics); } } e.Graphics.DrawImageUnscaled(ImageBackBufferbitmap, 0, 0); if (CurrentProgress < 1.0f && !ShownAsAbout) { //get the appropriate dimensions... float widthprogress = ImageBackBufferbitmap.Width * CurrentProgress; RectangleF drawprect = new RectangleF((float)widthprogress, 0, ImageBackBufferbitmap.Width - widthprogress, ImageBackBufferbitmap.Height); e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(128, Color.Red)), drawprect); SizeF measuresize; String loadingtext = "Loading" + dupe('.', DateTime.Now.Millisecond / 100 % 5); System.Drawing.Font loadingtextfont = new Font("Arabia", 48); measuresize = e.Graphics.MeasureString(loadingtext, loadingtextfont); RectangleF largerect = new RectangleF((float)panImage.ClientRectangle.Left, (float)panImage.ClientRectangle.Top, (float)panImage.ClientRectangle.Width, (float)panImage.ClientRectangle.Height); RectangleF userect = BCBlockGameState.CenterRect(largerect, measuresize); GraphicsPath pusepath = new GraphicsPath(); pusepath.AddString(loadingtext, loadingtextfont.FontFamily, (int)loadingtextfont.Style, loadingtextfont.Size, new PointF(48, 48), StringFormat.GenericDefault); e.Graphics.FillPath(new SolidBrush(Color.Yellow), pusepath); e.Graphics.DrawPath(new Pen(Color.Black, 2), pusepath); } }