首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OnPaint()方法

使用OnPaint()方法
EN

Stack Overflow用户
提问于 2013-04-30 15:30:07
回答 2查看 481关注 0票数 1

我正在使用this library在WinForm应用程序中生成QRcode,但是我不知道如何使用OnPaint()方法。

所以我有这样的想法:

代码语言:javascript
复制
public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();
  }

  protected override void OnPaint(PaintEventArgs e)
  {
    QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.M);
    QrCode qrCode;
    encoder.TryEncode("link to some website", out qrCode);

    new GraphicsRenderer(new FixedCodeSize(200, QuietZoneModules.Two))
                             .Draw(e.Graphics, qrCode.Matrix);

    base.OnPaint(e);
  }

  private void Form1_Load(object sender, EventArgs e)
  {
    this.Invalidate();
  }
}

我在表单中有一个简单的pictureBox,我只想在其中生成QRcode图像(如果可以在picturebox中生成它)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-30 15:33:28

如果你把你的图片放在一个picturebox中,并且你只生成一次图片,那么你不需要担心paint方法(你不是在做动画等等,它只是一个二维码)

只需在表单加载(或生成图像的任何位置)中执行此操作

代码语言:javascript
复制
mypicturebox.Image = qrCodeImage;

更新-为您的库提供便利的附加代码

代码语言:javascript
复制
    var bmp = new Bitmap(200, 200);
    using (var g = Graphics.FromImage(bmp))
    {
        new GraphicsRenderer(
            new FixedCodeSize(200, QuietZoneModules.Two)).Draw(g, qrCode.Matrix);
    }
    pictureBox1.Image = bmp;
票数 1
EN

Stack Overflow用户

发布于 2013-04-30 16:40:13

这就是我最终所做的:

代码语言:javascript
复制
public partial class Form1 : Form
    {
        public event PaintEventHandler Paint;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox_Paint);
            this.Controls.Add(pictureBox1);
        }

        private void pictureBox_Paint(object sender, PaintEventArgs e)
        {
            QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.M);
            QrCode qrCode;
            encoder.TryEncode("www.abix.dk", out qrCode);

            new GraphicsRenderer(
                new FixedCodeSize(200, QuietZoneModules.Two)).Draw(e.Graphics, qrCode.Matrix);
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16294506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档