我一直在寻找这个问题,但还没有找到我想要的东西。
我希望能够在图片框中创建一个可以通过“搜索框”定位到某个点的图像。基本上,将像素的位置映射到某些短语或字母,然后移动图片框上的位置。
我尝试使用点设置位置,但这根本不会改变图片;计算下面代码后的位置固执地保持在(3,3)。
图片也很大(~3500 x~3000),需要滚动条才能完全查看。
这是我的代码
public Form1()
{
InitializeComponent();
flowLayoutPanel1.AutoScroll = true;
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
flowLayoutPanel1.Controls.Add(pictureBox1);
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "m")
{
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
pictureBox1.Image = Image.FromFile(@"C:\User\Desktop\map.jpg");
pictureBox1.Location = new Point(700, 200);
// ^ The location does not change and stays at (3,3)
// The picturebox is not set as locked
}
我需要做一些与众不同的事吗?或者我的图片是不允许我更改位置的问题?
编辑由于以下帮助,我找到了解决方案。我不得不使用面板并将图片框放在其中。以下是我使用的代码。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
panel1.AutoScroll = true;
panel1.Controls.Add(pictureBox1);
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
pictureBox1.Image = Image.FromFile(@"C:\Desktop\image.jpg");
}
private void button1_Click(object sender, EventArgs e)
{
pictureBox1.Visible = true;
label1.Visible = true;
int Hvalue = panel1.HorizontalScroll.Value;
label1.Text = Hvalue.ToString();
label2.Visible = true;
int Vvalue = panel1.VerticalScroll.Value;
label2.Text = Vvalue.ToString();
if (textBox1.Text == "m")
{
// these are just values that I put in
panel1.HorizontalScroll.Value = 616;
panel1.VerticalScroll.Value = 90;
}
}