在PictureBox()中绘制矩形或箭头

本文关键字:绘制 PictureBox | 更新日期: 2023-09-27 18:28:38

这项工作是正确的。如果我从我的系统中拍照

        pictures[idObjekt] = new Bitmap(@"C:'rectangle.png");
        picBox[idObjekt] = new PictureBox();
        picBox[idObjekt].Location = new System.Drawing.Point(25, 7);
        picBox[idObjekt].SizeMode = PictureBoxSizeMode.StretchImage;
        picBox[idObjekt].ClientSize = new Size(53, 40);
        picBox[idObjekt].Image = pictures[idObjekt];
        picBox[idObjekt].MouseDown += pictureBox1_MouseDown;
        picBox[idObjekt].MouseMove += pictureBox1_MouseMove;
        picBox[idObjekt].PreviewKeyDown += Form1_PreviewKeyDown;
        picBox[idObjekt].Tag = idObjekt;
        this.Controls.Add(this.picBox[idObjekt]);

但是当我尝试在PictureBox()中绘制一些东西时,我只看到空的PictureBox(,),我不知道为什么这不正确。

        pictures[idObjekt] = new Bitmap(1000, 1000, PixelFormat.Format24bppRgb);
        picBox[idObjekt] = new PictureBox();
        picBox[idObjekt].Location = new System.Drawing.Point(25, 7);
        picBox[idObjekt].SizeMode = PictureBoxSizeMode.StretchImage;
        picBox[idObjekt].ClientSize = new Size(500, 500);
        picBox[idObjekt].MouseDown += pictureBox1_MouseDown;
        picBox[idObjekt].MouseMove += pictureBox1_MouseMove;
        picBox[idObjekt].PreviewKeyDown += Form1_PreviewKeyDown;
        picBox[idObjekt].Tag = idObjekt;
        picBox[idObjekt].BackColor = Color.White;
        this.Controls.Add(this.picBox[idObjekt]);
        Graphics g = Graphics.FromImage(pictures[idObjekt]);
        // Rectangle
        int heightRec = 100;
        int widthRec = 250;
        int pozitionX = 10;
        int pozitionY = 10;
        g.DrawRectangle(Pens.White, pozitionX + 1, pozitionY + 1, widthRec - 3, heightRec - 3);
        g.DrawRectangle(Pens.Gray, pozitionX + 2, pozitionY + 2, widthRec - 3, heightRec - 3);
        g.DrawRectangle(Pens.Black, pozitionX, pozitionY, widthRec, heightRec);
        g.DrawString("The Code Project", new Font("Arial", 12, FontStyle.Italic),
        SystemBrushes.WindowText, new PointF(10, 50));
        // Arrow
        Pen p = new Pen(Color.Red, 7);
        p.EndCap = LineCap.ArrowAnchor;
        // Arrow
        Point point1 = new Point(100, 100);
        Point point2 = new Point(100, 100);
        g.DrawLine(p, point1, point2);
        g.Dispose();
        pictures[idObjekt].Dispose();

在PictureBox()中绘制矩形或箭头

第二次,您从未将位图分配给PictureBox。

picBox[idObjekt].Image = pictures[idObjekt];

画完之后,为什么要调用pictures[idObjekt].Dispose()?如果您需要图片框中的图像保留,则不应丢弃该图像。