如何在用户命令上显示多个图像?

时间:2012-11-30 18:54:19

标签: c# image event-handling paintevent

我需要在用户按下Gui上的菜单后显示一组图像。我一直在尝试使用以下代码。

 private void imagePalleteToolStripMenuItem_Click(object sender, EventArgs e)
    {
        List<string> Files = this.MyImageCollection.ConvertFileNamesToList();
        foreach (string currtFile in Files)
        {
            Image newImage = Image.FromFile(currtFile);

            // Create rectangle for displaying image.
            Rectangle destRect = new Rectangle(100, 100, 450, 150);

            // Draw image to screen.
            e.Graphics.DrawImage(newImage, destRect);
        }

我认为这会有效,但我收到错误:

'System.EventArgs'不包含'Graphics'的定义,并且没有扩展方法'Graphics'可以找到接受类型'System.EventArgs'的第一个参数(你是否缺少using指令或汇编引用? )

我尝试用PaintEventHandler替换EventHandler,但后来我收到错误:

this.imagePalleteToolStripMenuItem.Click += new System.EventHandler(this.imagePalleteToolStripMenuItem_Click);

,指出:

'imagePalleteToolStripMenuItem_Click'没有重载匹配委托'System.EventHandler'

我也尝试将该行更改为:

this.imagePalleteToolStripMenuItem.Click += new System.Windows.Forms.PaintEventHandler(this.imagePalleteToolStripMenuItem_Click);

但这也是一个错误说明:

无法将类型'System.Windows.Forms.PaintEventHandler'隐式转换为'System.EventHandler'r

* 注意: *我的目标是调用一个对话框,以缩略图形式显示所有图像。因此,如果这不是正确的方法,请重定向我

2 个答案:

答案 0 :(得分:1)

您将paint事件与click事件混淆。如果您希望在用户单击按钮时发生某些事情,请将其放入click事件中。你点击按钮会画什么?

相反,设计一个新的表单来显示您的图像,按钮点击事件,收集您的图像,并将这些图像提供给您的对话框。让对话框担心显示它们。

答案 1 :(得分:0)

看起来你抓住了最初在OnPaint事件中的一些示例代码。您已将此添加到完全不同类型的事件中,该事件不会传递给您Graphics对象。您需要将此代码放在OnPaint事件的任何控件中,或者尝试完全不同的方法。

正确的解决方案取决于您希望如何工作(您是否尝试更新屏幕上的内容,显示新对话框等)。