Как передать захваченный снимок экрана в список изображений на другой форме в C#?
Я разрабатываю приложение, которое делает скриншот и загружает его в список изображений в другой форме.После того, как я запускаю приложение 2-го числа, захваченное изображение не сохраняется в списке изображений на другой форме, и я не вижу, был ли снимок экрана захвачен или нет. Есть какие-то решения?
Что я уже пробовал:
Это мой код для захвата скриншота.
public partial class Form1 : Form { Point startPos; Point currentpos; bool drawing; public Form1() { this.WindowState = FormWindowState.Maximized; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.BackColor = Color.White; this.Opacity = 0.75; this.Cursor = Cursors.Cross; this.MouseDown += Form1_MouseDown; this.MouseMove += Form1_MouseMove; this.MouseUp += Form1_MouseUp; this.Paint += Form1_Paint; this.KeyDown += Form1_KeyDown; this.DoubleBuffered = true; } private void Form1_MouseMove(object sender, MouseEventArgs e) { currentpos = e.Location; if (drawing) this.Invalidate(); } private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) { this.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.Close(); } } public Rectangle GetRectangle() { return new Rectangle( Math.Min(startPos.X, currentpos.X), Math.Min(startPos.Y, currentpos.Y), Math.Abs(startPos.X - currentpos.X), Math.Abs(startPos.Y - currentpos.Y)); } private void Form1_Paint(object sender, PaintEventArgs e) { if (drawing) e.Graphics.DrawRectangle(Pens.Red, GetRectangle()); } private void Form1_MouseUp(object sender, MouseEventArgs e) { this.DialogResult = System.Windows.Forms.DialogResult.OK; this.Close(); } private void Form1_MouseDown(object sender, MouseEventArgs e) { currentpos = startPos = e.Location; drawing = true; } private void InitializeComponent() { this.SuspendLayout(); this.ClientSize = new System.Drawing.Size(284, 261); this.Name = "Form1"; this.ShowInTaskbar = false; this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); }
Это мой код для imagelist
public partial class Display : Form { [DllImport("user32.dll")] public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc); #pragma warning disable CS0626 // Method, operator, or accessor is marked external and has no attributes on it [DllImport("user32.dll")] public static extern bool UnregisterHotKey(IntPtr hWnd, int id); #pragma warning restore CS0626 // Method, operator, or accessor is marked external and has no attributes on it private const int TAKE_SNAP_HOTKEY_ID = 1; private ScreenCapture objScreenCapture; private int snapCount; private List<Bitmap> snaps; public Display() { InitializeComponent(); objScreenCapture = new ScreenCapture(); snapCount = 0; snaps = new List<Bitmap>(); RegisterHotKey(this.Handle, TAKE_SNAP_HOTKEY_ID, 6, (int)Keys.Z); } protected override void WndProc(ref Message m) { if (m.Msg == 0x0312 && m.WParam.ToInt32() == TAKE_SNAP_HOTKEY_ID ) { TakeSnap(); } base.WndProc(ref m); } private void takeSnapToolStripMenuItem_click(object sender, EventArgs e) { TakeSnap(); } private void setBoundsToolStripMenuItem_click(object sender, EventArgs e) { objScreenCapture.SetCanvas(); } private void TakeSnap() { var snap = objScreenCapture.GetSnapShot(); snaps.Add(snap); AddTopreview(snap); } private void AddTopreview(object snap1) { throw new NotImplementedException(); } private void AddTopreview(Bitmap snap) { imageList1.Images.Add(snap); listView1.Items.Add(new ListViewItem("Snap_" + (++snapCount), imageList1.Images.Count - 1)).EnsureVisible(); } private void SaveAsImagesToolStripMenuItem_Click(object sender, EventArgs e) { uti.SaveAsImages(snaps); } private void SaveAsWordToolStripMenuItem_Click(object sender, EventArgs e) { uti.SaveAsWord(snaps); } private void MainWindow_FormClosing(object sender, FormClosingEventArgs e) { UnregisterHotKey(this.Handle, TAKE_SNAP_HOTKEY_ID); }
Richard MacCutchan
Где находится код для objScreenCapture.GetSnapShot();
и что она возвращает? Кроме того, может ли проблема быть в
private void AddTopreview(object snap1)
{
throw new NotImplementedException();
}
?
Member 13958707
Спасибо, что указали на него. Он должен вернуть snap shot и он должен быть загружен в список изображений tje что я не могу сделать