小小小陆 2023-02-17 16:24
浏览 14
已结题

屏幕的缩放与布局设置125%后,图片显示不全

屏幕的缩放与布局设置125%后,图片显示不全

            var fg =this.CreateGraphics();
            Bitmap bmp;
            Metafile curMetafile = null;
            Graphics g = this.CreateGraphics();
            IntPtr hdc = g.GetHdc();
            try
            {
                using (var ms = new MemoryStream())
                {
                    curMetafile = new Metafile(ms, hdc);
                    Graphics g1 = Graphics.FromImage(curMetafile);
                    g1.SmoothingMode = SmoothingMode.HighQuality;

                    g1.FillEllipse(new SolidBrush(Color.Red), new RectangleF(0, 0, 500, 500));

                    g.ReleaseHdc(hdc);
                    g1.Dispose();
                    g.Dispose();
                    Bitmap bitmap = new Bitmap(curMetafile);
                    pictureBox1.Image = bitmap;
                    pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
                }
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
                g.ReleaseHdc(hdc);
                g.Dispose();
                return;
            }
            }

img

比例设置为100%时 ,显示是正常的。

img


但是设置为125%时,显示就不全了,请教一下大家有解决办法吗?

  • 写回答

1条回答 默认 最新

  • 小小小陆 2023-02-17 17:06
    关注
    
    private byte[] GetImageData()
            {
                var fg = this.CreateGraphics();
                Metafile curMetafile = null;
                Graphics g = this.CreateGraphics();
                IntPtr hdc = g.GetHdc();
                try
                {
                    using (var ms = new MemoryStream())
                    {
                        curMetafile = new Metafile(ms, hdc);
                        Graphics g1 = Graphics.FromImage(curMetafile);
                        g1.SmoothingMode = SmoothingMode.HighQuality;
                        g1.PixelOffsetMode = PixelOffsetMode.HighSpeed;
                        g1.FillEllipse(new SolidBrush(Color.Red), new RectangleF(0, 0, 500, 500));
    
                        g.ReleaseHdc(hdc);
                        g1.Dispose();
                        g.Dispose();
                        return ms.ToArray();
    
                    }
                }
                catch (Exception exp)
                {
                    MessageBox.Show(exp.Message);
                    g.ReleaseHdc(hdc);
                    g.Dispose();
                    return null;
                }
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = Image.FromStream(new MemoryStream(GetImageData()));
                pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月25日
  • 已采纳回答 2月17日
  • 修改了问题 2月17日
  • 创建了问题 2月17日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助