次の方法で共有


Control.ScaleCore メソッド

コントロール全体および子コントロールのスケール設定作業を実行します。

Protected Overridable Sub ScaleCore( _
   ByVal dx As Single, _   ByVal dy As Single _)
[C#]
protected virtual void ScaleCore(floatdx,floatdy);
[C++]
protected: virtual void ScaleCore(floatdx,floatdy);
[JScript]
protected function ScaleCore(
   dx : float,dy : float);

パラメータ

  • dx
    コントロールのスケールを水平方向に設定する比率。
  • dy
    コントロールのスケールを垂直方向に設定する比率。

解説

この ScaleCore メソッドは、 dx パラメータ値と dy パラメータ値を使用して、コントロールの高さと幅の両方を個別に設定します。現在のサイズに比例させてコントロールの高さおよび幅を維持するには、 dx パラメータおよび dy パラメータに対して同じ値を使用するか、1 つのパラメータをとる Scale メソッドのバージョンを呼び出します。

通常、コントロールのスケーリング動作を変更するには、このメソッドをオーバーライドします。

継承時の注意: 派生クラスで ScaleCore をオーバーライドする場合は、基本クラスの ScaleCore メソッドを呼び出して、コントロールのサイズが適切に変更されるようにしてください。

使用例

[Visual Basic, C#, C++] ScaleCore メソッドをオーバーライドして、派生コントロールとその子コントロールを拡大/縮小する例を次に示します。この例は、 Control クラスから直接的または間接的に派生したクラスがあることを前提にしています。

 
Protected Overrides Sub ScaleCore(dx As Single, dy As Single)
   ' Scale all child controls.
   Me.SuspendLayout()
   
   Dim myClientSize As Size = Me.ClientSize
   myClientSize.Height = CInt(myClientSize.Height * dx)
   myClientSize.Width = CInt(myClientSize.Width * dy)
   
   ' Scale the child controls because
   ' MyBase.ScaleCore was not called. 
   Dim childControl As Control
   For Each childControl In  Me.Controls
      childControl.Scale(dx, dy)
   Next childControl
   Me.ResumeLayout()
   
   Me.ClientSize = myClientSize
End Sub

[C#] 
protected override void ScaleCore(float dx, float dy)
{
   // Scale all child controls.
   this.SuspendLayout();

   Size myClientSize = this.ClientSize;
   myClientSize.Height = (int)(myClientSize.Height * dx);
   myClientSize.Width = (int)(myClientSize.Width * dy);
   
   /* Scale the child controls because
    * base.ScaleCore was not called. */
   foreach(Control childControl in this.Controls)
   {
      childControl.Scale(dx, dy);      
   }
   this.ResumeLayout();

   this.ClientSize = myClientSize;
}

[C++] 
protected:
   void ScaleCore(float dx, float dy) {
      // Scale all child controls.
      this->SuspendLayout();

      System::Drawing::Size myClientSize = this->ClientSize;
      myClientSize.Height = (int)(myClientSize.Height * dx);
      myClientSize.Width = (int)(myClientSize.Width * dy);

      /* Scale the child controls because
      * UserControl::ScaleCore was not called. */
      System::Collections::IEnumerator* myEnum = this->Controls->GetEnumerator();
      while (myEnum->MoveNext()) {
         Control* childControl = __try_cast<Control*>(myEnum->Current);

         childControl->Scale(dx, dy);
      }
      this->ResumeLayout();

      this->ClientSize = myClientSize;
   }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

Control クラス | Control メンバ | System.Windows.Forms 名前空間 | Scale