2009-06-03 11 views
0

私はいくつかのusercontrolを使用するアプリケーションを持っています。私は、使用するためにロードされた時のユーザコントロールのサムネイル画像を取得して、それらをflowlayoutパネルに追加したいと考えています。.NET Winform - ユーザーコントロールのサムネイル

ユーザーコントロールの読み込み時にサムネイルイメージの作成に関する情報はどこにありますか?

答えて

2

それが表示される前に、私はそれを行う方法を知りませんが、それが画面に表示されている一度あなたがこのようなアプローチを使用することができます。

private Image GetControlThumb(Control control, int thumbSize) 
{ 
    Bitmap imgLarge = new Bitmap(control.Bounds.Width, control.Bounds.Height); 
    using (Graphics g = Graphics.FromImage(imgLarge)) 
    { 
     g.CopyFromScreen(
      control.Parent.PointToScreen(new Point(control.Left, control.Top)), 
      new Point(0, 0), 
      new Size(control.Bounds.Width, control.Bounds.Height)); 
    } 


    Size size; 
    if (control.Width > control.Height) 
    { 
     size = new Size(thumbSize, (int)(thumbSize * (float)control.Height/(float)control.Width)); 
    } 
    else 
    { 
     size = new Size((int)(thumbSize * (float)control.Width/(float)control.Height), thumbSize); 
    } 
    Image imgSmall = imgLarge.GetThumbnailImage(size.Width, size.Height, new Image.GetThumbnailImageAbort(delegate { return false; }), IntPtr.Zero); 
    imgLarge.Dispose(); 
    return imgSmall; 

} 

あなたが得るためにそれを使用することができます任意のコントロールのサムネイル、次のように:私はディスクに画像を保存することができる午前ボタンクリックではなく、ユーザーコントロールLAOD上

myPictureBox.Image = GetControlThumb(someControl, 100); 
+0

私は白の画像を取得し、私は(ペイントを使用することができます)...私は知っていますこれはユーザーコントロールで数回呼び出されます –

+0

Usingブロックの目的は何ですか? –

+0

GraphicsクラスはIDisposableを実装しています。 usingブロックは、Graphicsオブジェクトがリソースを解放できるようにDisposeメソッドが呼び出されることを保証します。 –

関連する問題