我正在使用VS 2008中的Windows窗体应用程序,我希望在另一个上面显示一个图像,顶部图像是gif或具有透明部分的东西.
基本上我有一个大图像,我想在它上面放一个小图像,这样它们就像是一个图像给用户.
我一直在尝试使用一个图片盒,但这似乎没有用,有什么建议吗?
好的,我是一个完全的初学者,并设法在C#中组合一个小应用程序,我在文本框中输入用户名,应用程序获取该用户名的头像并将其显示在图片框中.
我想要做的是让工具提示显示鼠标悬停在加载的头像上时在文本框中键入的用户名.它应该在每次加载新头像时更改.我知道如何以正常方式使用工具提示,但这对我来说有点复杂.任何帮助将不胜感激.
谢谢.
我在C#.NET中创建一个应用程序.我有8个图片框.我使用了具有透明背景的PNG图像,但在我的形式中,当它出现在另一个图像上方时它是不透明的.
我正在使用Visual Studio 2012.这是我的表单的屏幕截图:

我知道之前已经提出(并回答过)这个问题.但是,没有一个解决方案适合我.这可能是由于我的无能,伏都教诅咒或者我想念的简单而明显的事情.
下面是拼图的所有相关部分的屏幕截图:
截屏http://dinosaur-island.com/PlantPictureBoxScreenCap.jpg
正如您所看到的,有许多植物作为资源加载到Images文件夹中.有一个带有名为"PlantPicture"的图片框的表单.有字符串,我知道它有一个很好的路径(因为我在调试器中检查过它):
PicPath = PicPath+".bmp";
Run Code Online (Sandbox Code Playgroud)
截屏http://dinosaur-island.com/PlantDebugger.jpg
我尝试了很多种装载,铸造等方法等.
如果你会怜悯并再给它一次,我会很感激任何建议.谢谢!
对于我的项目,我需要使用透明背景显示图像.我制作了一些具有透明背景的.png图像(为了检查这一点,我在Photoshop中打开它们).现在我有一个扩展PictureBox的类:
class Foo : PictureBox
{
public Foo(int argument)
: base()
{
Console.WriteLine(argument);//different in the real application of course.
//MyProject.Properties.Resources.TRANSPARENCYTEST.MakeTransparent(MyProject.Properties.Resources.TRANSPARENCYTEST.GetPixel(1,1)); //<-- also tried this
this.Image = MyProject.Properties.Resources.TRANSPARENCYTEST;
((Bitmap)this.Image).MakeTransparent(((Bitmap)this.Image).GetPixel(1, 1));
this.SizeMode = PictureBoxSizeMode.StretchImage;
this.BackColor = System.Drawing.Color.Transparent;
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这只是显示带有白色背景的图片框,我似乎无法使其与透明背景一起工作.
我有一个winforms应用程序.在开发模式下,从Visual Studio .NET 2003进行调试时(是的,我知道它已经过时,但这是一个遗留项目),当我尝试打开一个新表单时出现此错误.为了打开一个新表单,我得到一个表单实例,然后我调用ShowDialog()方法,例如:
frmTest test = new frmTest(here my parameters);
test.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
如果我按F11(踏入),调试它没有崩溃的时候,但如果在我实例的形式行我按F10进入下一行,也就是test.ShowDialog(),那么它崩溃显示此错误.
完整的消息错误是:
"System.drawing.dll中发生了'System.ApplicationException'类型的未处理异常.附加信息:试图释放不属于该进程的互斥"
我翻译了最后一部分:附加信息......因为它出现在西班牙语中.
我用参数实例化的表单,它的构造函数,包括初始化一些变量,例如:
public frmTest(string param1, string param2)
{
InitializeComponent();
this.param1 = param1;
this.param2 = param2;
}
private void frmTest_Load(object sender, EventArgs e)
{
// here I call a remote webservice asynchronously.
}
Run Code Online (Sandbox Code Playgroud)
我的表格"frmTest"还有四个图片框,一个标签和一个按钮.其中三个图片框包含一个png图像(它是在设计时通过Image属性分配的),最后一个图片框包含一个动画gif,也是通过Image属性在设计时加载的.可能由于这些图像而发生错误?
我有一个应用程序,在Windows窗体PictureBox控件内显示一个图像.的SizeMode控制被设定为Zoom,使得包含在该图像PictureBox将在一个方面,正确的方式不管尺寸的显示PictureBox.
这对于应用程序的视觉外观非常有用,因为您可以根据需要调整窗口大小,并始终使用最适合的图像显示图像.不幸的是,我还需要在图片框上处理鼠标点击事件,并且需要能够从屏幕空间坐标转换为图像空间坐标.
看起来很容易从屏幕空间转换到控制空间,但我没有看到任何明显的方法从控制空间转换到图像空间(即源图像中已在图片框中缩放的像素坐标).
有没有一种简单的方法可以做到这一点,或者我应该复制他们在内部使用的缩放数学来定位图像并自己进行翻译?
我有一个winform应用程序,它具有动态数字(基于数据库值)PictureBoxes.每个P-Box都有一个Tooltip控件.
如何在没有任何内存泄漏的情况下更改ToolTip文本?现在,我有以下代码,但它正在泄漏内存=>之前的ToolTip控件没有得到GC.
顺便说一句,这是一个尝试更新主UI线程的后台线程....
if (pictureBox == null || !pictureBox.IsHandleCreated) {
continue;
}
Action setTooltipAndImage = () => {
var toolTip = new ToolTip();
GameServer tempGameFile = gameServer;
toolTip.SetToolTip(pictureBox, string.Format(...));
pictureBox.Image = Resources.RedButton;
};
if (pictureBox.InvokeRequired) {
pictureBox.Invoke(setTooltipAndImage);
} else {
setTooltipAndImage();
}
Run Code Online (Sandbox Code Playgroud)
正如我所说 - 这有效,但它正在泄漏.
有人有什么建议吗?
我正在制作一款游戏,玩家可以点击其中一个单位(即图片框),并且玩家的单位位于中心,可以看到一个圆圈.(圆圈也是一个图片框)当玩家点击圆圈的图片框时,我需要弄清楚点击的位置是否在圆的半径范围内.我的问题是如何获得点击的位置?
我试图通过拖动它来移动名为pictureBox1的控件.问题是,当它移动时,它会一直从一个位置移动到鼠标周围的另一个位置,但它确实跟着它...这是我的代码.如果你能帮助我,我将非常感激
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
bool selected = false;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
selected = true;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (selected == true)
{
pictureBox1.Location = e.Location;
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
selected = false;
}
}
Run Code Online (Sandbox Code Playgroud)