|
■No101950 (まき さん) に返信 > なるべく画像編集はしない方向でやりたいのです。 なるほど。
> この「撮影出来る」というのはウインドウハンドルから直接画像を取得する方法ではなく、領域指定で切り抜けばということでしょうか? いえ。メイン 画面のウィンドウハンドルを指定して撮影するのではなく、 そこから呼ばれたドロップダウンメニューのウィンドウハンドルを指定して撮影するという意図でした。
とはいえ、ドロップダウンの大きさや Z-Order が得られないと現実的ではないか…。
private void timer1_Tick(object sender, EventArgs e) { timer1.Stop(); var hwnd = WindowFromPoint(Cursor.Position);
//GetWindowRect(hwnd, out Rectangle rect); DwmGetWindowAttribute(hwnd, DwmWindowAttribute.DWMWA_EXTENDED_FRAME_BOUNDS, out Rectangle rect, Marshal.SizeOf<Rectangle>());
textBox1.Text = $"{rect}"; var bmp = new Bitmap(rect.Width, rect.Height); using (var g = Graphics.FromImage(bmp)) { var hdc = g.GetHdc(); PrintWindow(hwnd, hdc, PW_RENDERFULLCONTENT); g.ReleaseHdc(hdc); } pictureBox1.Image?.Dispose(); pictureBox1.Image = bmp; Clipboard.Clear(); Clipboard.SetImage(bmp); }
|