Exemple #1
0
        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);
            }
        }