以下に示すように、Windowsフォームアプリを開発しています。スクリーンショットをキャプチャし、それらをサムネイル ストアとしてピクチャ ボックスに (動的に) 表示し、[コントロールの追加] ボタンのすぐ上にある FlowLayoutPanel に追加します。私はこれをやった。
FlowLayoutPanel の上で、それぞれの画像ボックス コントロールをクリックするとサムネイルが拡大表示されるようにします。動的に生成された画像ボックスにアクセスできなくなったことに気付きました。
誰かがそれを達成するのを手伝ってくれますか?
namespace Snapper
{
public partial class Main : Form
{
static int imgCounter = 0;//keeps track of img for naming
public Main()
{
InitializeComponent();
}
private void TestFlowButton_Click(object sender, EventArgs e)
{
CaptureScreen();
}
private void CaptureScreen()
{
/*This method captures a snapshot of screen and
* adds it to the ImageFlowLayoutPanel
*/
Rectangle bounds = Screen.GetBounds(Point.Empty);
Bitmap bmp = new Bitmap(bounds.Width,bounds.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
imgCounter += 1;
bmp.Save("snap" + imgCounter.ToString() + ".jpg", ImageFormat.Jpeg);
//creating a picturebox control and add it to the flowlayoutpanel
PictureBox tempPictureBox = new PictureBox();
//generates a thumbnail image of specified size
tempPictureBox.Image = bmp.GetThumbnailImage(100,100,
new Image.GetThumbnailImageAbort(ThumbnailCallback),
IntPtr.Zero);
tempPictureBox.Size = new System.Drawing.Size(100, 100);
tempPictureBox.Click += new EventHandler(this.tempPictureBox_Click);
ImageFlowLayoutPanel.Controls.Add(tempPictureBox);
}
//This click event will be used to display the enlarged images
private void tempPictureBox_Click(object sender, EventArgs e)
{
PreviewPictureBox.Image = ((PictureBox)sender).Image;
}
public bool ThumbnailCallback()
{
return true;
}
}
}