2008-08-30 10 views
4

C#でウィンドウフォームのズームレベルを設定する簡単な方法はありますか? VBAでは、フォームのズームプロパティがありました。C#でウィンドウフォームをズームする

+0

どのようなフォームを指定できますか?ウェブフォームとテキストエンコーディングのサイズについて話していますか? –

答えて

0

一般的なWinFormsで質問する方法はありません。

カスタムペイント/描画を行っている場合は、ズーム変換を使用してズームすることができますが、.NETとネイティブWindowsの全世界でフォームの「ズーム」プロパティはありません/ C++ APIを組み合わせたものです。

あなたは、一定の係数でコントロールを拡大するような自分自身を調整することができます。おそらく、これをサポートするサードパーティのコントロール/サーフェスを見つけることができます。また、WPFで可能なことを誰が知っていますか。しかし、典型的なWinFormsの世界では、

+0

方法は次のとおりです。http://msdn.microsoft.com/en-us/library/system.windows.forms.control.scale.aspxもちろん、スケーリングされたコントロールがスケーリングされた値が整数値に近似されているので、元のコントロールのサイズを把握する必要があります(連続したズームイン操作が不正確な元のサイズになる可能性があります)。 – Luca

+0

Fabrizioのものが正常に動作していたので、この回答は正しく表示されました – Chopchop

+0

@ChopChop公平で、私は "あなたは一定の要素でコントロールを拡大するようなものを自分で作ることができます"と言っていました。元の質問では、C#/ WinFormsでフォームをスケールしてDIYルートに移動する簡単な方法(VBフォームのズームレベルに似ています)があるかどうかを尋ねました。 –

8

私は同じ問題を抱えており、この方法でC#で解決しました。コードは継続するフォームロード

float scaleX = ((float)Screen.PrimaryScreen.WorkingArea.Width/1024); 
float scaleY = ((float)Screen.PrimaryScreen.WorkingArea.Height/768); 
SizeF aSf = new SizeF(scaleX, scaleY); 
this.Scale(aSf); 

この「多かれ少なかれ」のスケールフォームとすべての子。 800×600で永遠にループ あなたは、次のフォームプロパティを設定する必要があり(?):あなたがフォームに異なるフォントを割り当てることにより、ズームのいくつかの種類を取得することができます

AutoscaleMode = Font 
AutoSize = False 
2

場合は、すべてのコントロールはそれに応じてズームされますAutoScaleModeがFontに設定されています。また、AutoSizeをFalseに設定すると、フォームサイズはそのまま維持され、コントロールはフォームの中央に拡大します。すべてのアンカーを正しく設定して、外観をテストする必要があります。そのような「ズームの種類」だけです。だから、基本的には、ここで

は、サンプルコンストラクタです:

public Form1() 
{ 
    InitializeComponent(); 

    AutoSize = false; 
    AutoScaleMode = AutoScaleMode.Font; 
    Font = new Font("Trebuchet MS", 
     10.0f, 
     FontStyle.Regular, 
     GraphicsUnit.Point, 
     ((byte)(204)) 
    ); 
} 

フォームはすべてのコントロールを新しいフォントの意志の混乱を割り当てることが示されており、このトリックは動作しません後。

関連する問題