none
ControlPaint.DrawReversibleFrameの外枠線の太さ、色指定 RRS feed

  • 質問

  • グラフィックス・アプリケーションを開発しています。ラバーバウンドで下記のコントロールを使っています。

    ControlPaint.DrawReversibleFrame(theRectangle, this.BackColor, FrameStyle.Dashed);

    外枠線の太さ、色指定はどのようにしたらいいのでしょうか?

    宜しくお願いします。

    2011年4月13日 1:08

回答

  • ControlPaint.DrawReversibleFrameメソッドで出来ることは、
    指定したフレームスタイルで矩形を描画することです。
    その場合の枠線の色は、枠が背景に対して常に表示されるように、
    枠の塗りつぶし色を計算します。

    イメージとしては、デスクトップ上をマウスで範囲選択すると、
    範囲を示す矩形の枠が表示され、もしその色と近いものがアイコン
    や壁紙などの色にあれば、その部分はその色を反転させたような
    色となってその部分の枠色が表示されます。これと同様です。

    なので、外枠線の太さ、色指定ということですが、外枠線という
    ものは矩形の枠線の太さのことであれば、指定できません。
    なお、第三引数のフレームスタイルが「Thick」の場合は、若干太いです。

    また色指定とは矩形の枠線の色ということであれば、上記で
    説明しましたとおり、基本的には第二引数で指定した枠線の色になりますが
    色が背景と近い場合は、その箇所は反転させたような色に自動でなります。

    単純に指定した太さ、指定した色で矩形を描画したいのであれば、
    DrawRectangleメソッドというものがあります。


    2011年4月13日 2:47

すべての返信

  • ControlPaint.DrawReversibleFrameメソッドで出来ることは、
    指定したフレームスタイルで矩形を描画することです。
    その場合の枠線の色は、枠が背景に対して常に表示されるように、
    枠の塗りつぶし色を計算します。

    イメージとしては、デスクトップ上をマウスで範囲選択すると、
    範囲を示す矩形の枠が表示され、もしその色と近いものがアイコン
    や壁紙などの色にあれば、その部分はその色を反転させたような
    色となってその部分の枠色が表示されます。これと同様です。

    なので、外枠線の太さ、色指定ということですが、外枠線という
    ものは矩形の枠線の太さのことであれば、指定できません。
    なお、第三引数のフレームスタイルが「Thick」の場合は、若干太いです。

    また色指定とは矩形の枠線の色ということであれば、上記で
    説明しましたとおり、基本的には第二引数で指定した枠線の色になりますが
    色が背景と近い場合は、その箇所は反転させたような色に自動でなります。

    単純に指定した太さ、指定した色で矩形を描画したいのであれば、
    DrawRectangleメソッドというものがあります。


    2011年4月13日 2:47
  • Honefi様、

    早々のご返事ありがとうございました。DrawRectangleを用いたラバーバンディングの方法をご存じであれが教えてください。

    福田

    2011年4月13日 3:14
  • サンプルとしては以下のページが参考になるかと思います。

    [ DOBON.NET  ]
    http://dobon.net/vb/dotnet/graphics/drawrectangle.html

    上記ページを参考にし、Penオブジェクト生成時に、色と幅(太さ)を指定します。
    例えば以下のようにします。

    // FormにPictureBox1コントロールがあるものとする
    Graphics g = PictureBox1.CreateGraphics();
    // Penオブジェクトの作成時に、色と太さを指定できる
    // 以下は例として、緑色で太さ3
    Pen p = new Pen(Color.Green, 3);
    g.DrawRectangle(p, 10, 10, 50, 50);
    //リソースを開放する
    p.Dispose();
    g.Dispose();
    
    
    2011年4月13日 4:01