■ はじめに
https://blogs.yahoo.co.jp/dk521123/37857445.htmlで、画像をクリップボードにコピーしたが、 Graphicsで描画した図形も含めてコピーはできない。 今回は、Graphicsで描画した図形も含めてコピーする方法について記載する。
■ 解決案
* コピー直前の対象インスタンス(下記でいうと「selectedImage」)に対して、 画面に描画している内容(下記でいう「this.DeawText()」の内部)を再度行う。
サンプル抜粋
https://blogs.yahoo.co.jp/dk521123/37857445.htmlの「例2:矩形で囲ってリリースしたタイミングでコピー」がベース
private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { if (this.targetRectangle.Height == 0 || this.targetRectangle.Width == 0) { return; } var pictureBox = sender as PictureBox; var start = this.startPoint; var end = e.Location; var copyArea = Rectangle.FromLTRB( Math.Min(start.X, end.X), Math.Min(start.Y, end.Y), Math.Max(start.X, end.X), Math.Max(start.Y, end.Y)); using (var image = new Bitmap(pictureBox.Image)) using (var selectedImage = image.Clone(copyArea, image.PixelFormat)) using (var graphics = Graphics.FromImage(selectedImage)) { // ★ここで描画する★ this.DeawText(graphics); // 画像をクリップボードにコピー Clipboard.SetImage(selectedImage); } pictureBox.Invalidate(); this.startPoint = Point.Empty; this.targetRectangle = Rectangle.Empty; } private void DeawText(Graphics g) { Font fnt = new Font("Arial", 20); g.RotateTransform(45); g.TranslateTransform(0, 0); g.DrawString("Hello World!!", fnt, Brushes.White, 100, 100); }
関連記事
PictureBox
PictureBox [1] ~ 画像を表示する ~https://blogs.yahoo.co.jp/dk521123/23504075.html
PictureBox [2] ~ PictureBox を マウスで移動する ~
https://blogs.yahoo.co.jp/dk521123/37861699.html
PictureBox [3] ~ マウスホイール で画像の拡大・縮小する ~
https://blogs.yahoo.co.jp/dk521123/37866101.html
PictureBox [4] ~ PictureBox 内に文字列を描画する ~
https://blogs.yahoo.co.jp/dk521123/37890831.html
PictureBox [5] ~ PictureBox 内に画像を描画する ~
https://blogs.yahoo.co.jp/dk521123/37890873.html
PictureBox [6] ~ PictureBox 内でMouseMoveイベントにより線を描画する ~
https://blogs.yahoo.co.jp/dk521123/37905014.html
PictureBox [7] ~ 画像をコピーする・その1 ~
https://blogs.yahoo.co.jp/dk521123/37857445.html
その他
Windows Form ~ 目次 ~https://blogs.yahoo.co.jp/dk521123/8054245.html
クリップボード
https://blogs.yahoo.co.jp/dk521123/7518189.html