示例#1
0
        // Picture
        private void picture_Paint(object sender, PaintEventArgs e)
        {
            this.ownerForm.Layer = this.Layer;
            if (tilesetImage == null)
            {
                return;
            }
            e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
            Rectangle rdst = new Rectangle(0, 0, 256, height);

            if (toggleBG.Checked)
            {
                e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(PaletteSet.Palette[16])), rdst);
            }
            e.Graphics.DrawImage(tilesetImage, rdst, 0, 0, 256, height, GraphicsUnit.Pixel);
            if (moving && selection != null)
            {
                Rectangle rsrc = new Rectangle(0, 0, overlay.SelectTS.Width, overlay.SelectTS.Height);
                rdst = new Rectangle(
                    overlay.SelectTS.X * zoom, overlay.SelectTS.Y * zoom,
                    rsrc.Width * zoom, rsrc.Height * zoom);
                e.Graphics.DrawImage(new Bitmap(selection), rdst, rsrc, GraphicsUnit.Pixel);
                Do.DrawString(e.Graphics, new Point(rdst.X, rdst.Y + rdst.Height),
                              "click/drag", Color.White, Color.Black, new Font("Tahoma", 6.75F, FontStyle.Bold));
            }
            float[][] matrixItems =
            {
                new float[] { 1, 0, 0,     0, 0 },
                new float[] { 0, 1, 0,     0, 0 },
                new float[] { 0, 0, 1,     0, 0 },
                new float[] { 0, 0, 0, 0.50F, 0 },
                new float[] { 0, 0, 0,     0, 1 }
            };
            ColorMatrix     cm = new ColorMatrix(matrixItems);
            ImageAttributes ia = new ImageAttributes();

            ia.SetColorMatrix(cm, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
            if (priority1 != null && toggleP1.Checked)
            {
                e.Graphics.DrawImage(priority1, rdst, 0, 0, 256, height, GraphicsUnit.Pixel, ia);
            }
            if (mouseEnter)
            {
                Point location = new Point(mousePosition.X / 16 * 16 * zoom, mousePosition.Y / 16 * 16 * zoom);
                overlay.DrawHoverBox(e.Graphics, location, new Size(16 * zoom, 16 * zoom), zoom, true);
            }
            if (Rails)
            {
                overlay.DrawRailProperties(null, 16, 16, e.Graphics, 1);
            }
            if (toggleTileGrid.Checked)
            {
                overlay.DrawTileGrid(e.Graphics, Color.Gray, Picture.Size, new Size(16, 16), 1, true);
            }
            if (overlay.SelectTS != null)
            {
                overlay.SelectTS.DrawSelectionBox(e.Graphics, 1);
            }
        }