none
背景图片上小图片的位置和长度宽度都是小数 RRS feed

  • 问题

  • 如何实现背景图片上小图片的位置和长度宽度都是小数。DrawImage(Image image, RectangleF destRect, RectangleF srcRect, GraphicsUnit srcUnit)这个方法不起作用。

    2020年10月15日 11:20

答案

  • Hi meng2020,

    我想问DrawImage这个方法是哪里不起作用。

    我尝试下了这个方法,发现可以使用小数来设置位置和长度宽度,你可以看看下面的代码。

        private void Form1_Load(object sender, EventArgs e)
            {
                pictureBox1.Image = Image.FromFile("D:\\pic\\1.jpg");
                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            }
    
            private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                // Create image.
                Image newImage = Image.FromFile(Path.Combine("D:\\","3.ico"));
    
                // Create coordinates for upper-left corner of image.
                float x = 99.56F;
                float y = 93.57F;
    
                // Create rectangle for source image.
                RectangleF srcRect = new RectangleF(30.12F, 33.12F, 32.14F, 33.16F);
                GraphicsUnit units = GraphicsUnit.Pixel;
    
                // Draw image to screen.
                e.Graphics.DrawImage(newImage, x, y, srcRect, units);
            }

    结果示例:

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 meng2020 2020年10月20日 4:14
    2020年10月16日 9:36
    版主

全部回复

  • DrawImage(Image image, RectangleF destRect, RectangleF srcRect, GraphicsUnit srcUnit),不能出现小数,为啥这个方法存在呢。比如一张大图A,一张小图b,将b用这个方法重画到大图A上,b不能选择小数的位置和长度吗?两张图片合成的C就是A的长宽啊。
    2020年10月16日 1:57
  • Hi meng2020,

    我想问DrawImage这个方法是哪里不起作用。

    我尝试下了这个方法,发现可以使用小数来设置位置和长度宽度,你可以看看下面的代码。

        private void Form1_Load(object sender, EventArgs e)
            {
                pictureBox1.Image = Image.FromFile("D:\\pic\\1.jpg");
                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            }
    
            private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                // Create image.
                Image newImage = Image.FromFile(Path.Combine("D:\\","3.ico"));
    
                // Create coordinates for upper-left corner of image.
                float x = 99.56F;
                float y = 93.57F;
    
                // Create rectangle for source image.
                RectangleF srcRect = new RectangleF(30.12F, 33.12F, 32.14F, 33.16F);
                GraphicsUnit units = GraphicsUnit.Pixel;
    
                // Draw image to screen.
                e.Graphics.DrawImage(newImage, x, y, srcRect, units);
            }

    结果示例:

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 meng2020 2020年10月20日 4:14
    2020年10月16日 9:36
    版主