C#在位图上动态绘制图形dillema



好的,首先,我有一个数据列表(多行)。该数据需要绘制在位图上进行预览(位图是文凭)。单击预览按钮后,我将被发送到另一个选项卡,在那里我可以预览作业(上面有图形的位图)。之后,用户可以选择打印数据(图形)。

如果我选择不同的行,图形必须更改。

问题是:我不知道该如何实现位图,何时何地在pictureBox上绘制位图。我尝试了很多方法(每次绘制的地方都有一个静态位图,因为无法清除它进行第二次重绘而失败,有一个生成位图的方法,因为内存泄漏而失败),但我要么只处理文本,要么只处理背景图像,要么出现巨大的内存泄漏(因为我需要显示绘制的字符串,我无法处理位图)。

你对我该如何处理这个问题有什么建议吗?

选择我们正在为其生成预览的行

预览窗口的外观(显然上面有文本)

您需要两个位图,一个用于透支,另一个作为源,或者每次都需要动态创建结果。

在任何情况下,你都需要

  • 保留原始图形
  • 组合用完后就处理掉

我建议保持简单,并在SelectionChanged:上创建一个结果图像

Bitmap diplomaBackground = null;  // load upon startup
Bitmap result = null;
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
    if (result != null)
    {
        if (pb_preview.Image != null) pb_preview.Image = null;
        result.Dispose();
    }
    if (dataGridView1.SelectedRows.Count > 0)
    {
        result = CreateNewDiploma(dataGridView1.SelectedRows[0].Index);
        pb_preview.Image = result;
    }
}
Bitmap CreateNewDiploma(int rowIndex)
{
    Bitmap bmp = new Bitmap(diplomaBackground);
    using (Graphics G = Graphics.FromImage(bmp))
    {
        // draw the data..
    }
    return bmp;
}

将预览框设置为缩放。

相关内容

  • 没有找到相关文章

最新更新