在 Visual C# 中获取 Components 类以在面板中放置图像

Posted

技术标签:

【中文标题】在 Visual C# 中获取 Components 类以在面板中放置图像【英文标题】:Get Components class in Visual C# to put an image in the panel 【发布时间】:2015-03-08 18:15:21 【问题描述】:

我在使用 C# 在 Visual Studio 2010 的 Forms 应用程序中创建组件类时遇到问题。我为一个游戏创建了一个目标,你应该将球扔到目标上。

这没有错误,但应用程序无法运行,只是弹出一个窗口说“Bounce 停止工作”,“Windows 正在尝试查找问题..”。如果我删除代码当然应用程序运行完全正常。

所以有些东西是错的,但我真的不支持哪部分是错的。有人有想法吗?

请忽略我的瑞典 cmets..

在我的组件类 Target.cs 中:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace Bounce

 class Target : Label
 
    public double targetPosX, targetPosY;

    public Target(Image image)
    
        Image = image;
        BackColor = Color.Transparent; // Sätter bakgrundsfärgen till genomskinlig på kontrollen
        Size = new Size(205, 100); // Sätter storleken på kontrollen
        Visible = true; // Ser till att bollarna syns
    

    public void ShowTarget()
    
        targetPosX = Location.X;
        targetPosY = Location.Y;
    

 

代码中的bounce.cs表单(代码相关部分):

       //Target

       Target target;

       target = new Target(Image.FromFile("images/target.png"));
       panel.Controls.Add(target);
       target.Location = new Point(100, 200);
       target.ShowTarget();

【问题讨论】:

您是否单步执行了您的程序?通过这种方式,您可能会发现它(确切地)在哪里崩溃。 不,实际上我没有,但我真的不记得是怎么回事了,所以当我对这个很陌生时,我就跳过了它,希望有人能马上看到问题所在;)但这是我的下一步究竟该怎么做 所以了解如何设置断点和单步执行您的代码。这些是你的朋友! dotnetperls.com/debugging 我会的,但与此同时,你知道有什么问题吗? 【参考方案1】:

问题是您的图像路径无效。它应该是图像文件的完整路径。例如"c:\someDirectory\Images\target.png"

【讨论】:

我在查看目标时发现目标在代码中直接错误,但我不得不更改的图片的某些属性与路径有关我猜的图像。构建操作 - 内容复制到输出目录 - 如果更新则复制【参考方案2】:

您将大小设置为 205、100,但将位置设置为 100、200

所以位置在您的矩形之外...

【讨论】:

这真的很重要,因为位置就是它在面板中的位置。

以上是关于在 Visual C# 中获取 Components 类以在面板中放置图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 中从数据库中获取数据(使用 C#)时使 HTML 行可点击

如何从使用directx c# visual studio播放的视频中获取和处理每一帧(位图图像​​)

在 Visual Studio C# 中从 MS Access 数据库中获取 OLE(位图)对象,我的代码有啥问题?

如何在 Visual C# 中使用设置

visual studio开发工具的C#主流控件属性一览表

GetSubKeyNames 函数在 C# 和 Visual Basic 中返回不同的子键