Clipboard Image

プロジェクトの画像

C# で Clipboard を使って、イメージ(画像)を Copy&Paste します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

イメージをコピー

  1. Clipboard に画像を格納する ClipImgSet.cs の全ソースコードです。
    /**********************************************/
    /*★ クリップボードに画像を格納     前田 稔 ★*/
    /**********************************************/
    using System;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.Windows.Forms;
    
    class ConsoleMode
    {
        [STAThread]
        public static int Main()
        {
            Bitmap bmp = new Bitmap(400, 100);
            Graphics g = Graphics.FromImage(bmp);
            g.FillRectangle(new SolidBrush(Color.DarkGreen), 0, 0, 400, 100);
            g.DrawString("イメージ画像を作成", new Font("Times New Roman", 20),
                         new SolidBrush(Color.Gold), 40, 25);
            Clipboard.SetDataObject(bmp, true);
            return 0;
        }
    }
    
  2. このプログラムは Draw で書いたイメージをファイルに出力 と同じで、 GIF 形式で保存する代わりにクリップボードに格納します。
    Clipboard.SetDataObject(bmp, true); がクリップボードに格納するコードです。
  3. このプログラムでクリップボードに格納した画像をイメージ編集ソフトで貼り付けてみて下さい。
    IrfanView を起動して、[選択範囲へ貼り付け(p)]から表示することが出来ました。
    またペイントブラシの[貼り付け]アイコンで、画像を張り付けることが出来ました。
  4. Windows(C++) でも同様のプログラムを作成しています。
    全画面をクリップボードにコピーする を参照して下さい。

イメージをペースト

  1. Clipboard から画像を取得して描画する ClipImgGet.cs の全ソースコードです。
    /**********************************************/
    /*★ クリップボードの画像を描画     前田 稔 ★*/
    /**********************************************/
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    public class MyForm : Form
    {
        public MyForm()
        {
            Width  = 800;
            Height = 640;
            Paint += new PaintEventHandler(MyHandler);
        }
    
        private void MyHandler(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
    
            IDataObject data = Clipboard.GetDataObject();
            if (data.GetDataPresent(DataFormats.Bitmap))
            {   Image img = (Image)data.GetData(DataFormats.Bitmap);
                g.DrawImage(img, new PointF(10F,20F));
            }
        }
    }
    
    class image01
    {
        [STAThread]
        public static void Main()
        {
            MyForm mf = new MyForm();
            Application.Run(mf);
        }
    }
    
  2. if (data.GetDataPresent(DataFormats.Bitmap)) でクリップボードに画像が格納されているかを調べます。
    GetData(DataFormats.Bitmap) でクリップボードの画像を Image に取得して描画します。
  3. 他のソウトでコピーしたイメージを、このプログラムで描画してみて下さい。
    IrfanView でクリップボードにコピーした画像を描画することが出来ました。
    またプリントスクリーンでクリップボードに張り付けた画像も描画することが出来ました。
  4. Windows(C++) でも同様のプログラムを作成しています。
    クリップボードの画像を描画 を参照して下さい。
    クリップボードを使わないで Capture したイメージをファイルに保存するプログラムは Screen Capture を参照して下さい。

超初心者のプログラム入門(C# Frame Work)