none
PictureBoxの表示について RRS feed

  • 質問

  • VB2013 Express Edition を使用しています。

    Picture Boxの表示ですが、VB2008の時はPicture Boxの

    Enableを”False”にすると表示色が薄くなりましたが、VB2013

    では、”Enable”でも”False”でも変わりなく、通常に表示しています。

    どこか設定が違うのではないかと思いますが、プロパティを比較した

    かぎり、2008と2013で変わりありません。何が原因なのかお教え下さい。

    参考書」、ネットを検索した範囲では原因を見つけられませんでした。

    Picture Boxは、どちらもパネルに貼り付けています。パネルのプロパティ

    も同じでした。よろしくお願いいたします。

    2015年3月4日 7:38

すべての返信

  • 表示色が薄くなるとは具体的に何の表示色でしょうか? 例えばある画像を表示していて、その色が薄くなるということでしょうか?
    私の方でVB2008、およびVB2013でPictureBoxのEnabledをFalseに変更してみましたが、どちらも特に色が薄くなるということはなくEnabled = Trueの時と同じ表示でした。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2015年3月4日 8:53
    モデレータ
  • こんにちは。

    画像が灰色になるという意味でしたでしょうか。
    VisualStudio2013Pro(.NET4.5, .NET3.5)とVisualStudio2005Pro(.NET2.0)で確認してみましたが、
    どちらもEnable=Falseで画像の色は変わりませんでした。

    私は存じませんが
    VisualStudioによる違いは考えにくいので何か他の原因でしょうか。

    ご参考までに、
    非活性時の画像色を変更するにはControlPaint.DrawImageDisabledを使用する方法があります。PictureBox.PaintイベントでEnableを判断して設定します。

    Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
        If Not PictureBox1.Enabled Then
            ControlPaint.DrawImageDisabled(e.Graphics, PictureBox1.Image, 0, 0, BackColor)
        End If
    End Sub
    

    2015年3月4日 9:00
    モデレータ
  • 回答ありがとうございます。

    VB2008の時は、黒が灰色に、赤がピンクにと彩度が

    下がる感じです。

    Enable = False にすることにより薄色表示になるために、

    Picture Boxが操作不可になった事が視覚的に判るので重宝

    していましたが、別の方法を考えるべきなのか、困っています。

    2015年3月4日 11:12
  • 回答ありがとうございます。

    モデレータさんへ回答しましたように、黒が灰色に、赤がピンクにと

    彩度が下がる感じです。

    VisualStudioによる違いは考えにくいので何か他の原因でしょうか。

    とのことですが、私としてはVisualStudio以外には考えられません。VB初心者

    ですので自信はありませんが、デバッグ時はVisualStudio以外は何も関わって

    いないと思っているためです。

    回答の参考にある内容は今の私には100%理解できるものではありませんが、

    試してみます。

    2015年3月4日 11:27
  • Windows XP + .NET 3.5SP1, Windows XP + .NET 4, Windows 8.1 Update + .NET 3.5, Windows 8.1 Update + .NET 4.5 とかざっと試しましたが、やはり、きいちゃんさんが言うような Enabled で淡色表示になる動きは確認できませんでした。

    // モデレーターは名前ではなく、役割です。名前は別にあるので注意しましょう。

    2015年3月4日 14:27
    モデレータ
  • 回答ありがとうございます。

    trapemiyaさん名前を間違え大変失礼しました。以後注意します。

    VB2008の時は.NET 4だったと記憶しています。考えられる.NETに

    ついて確認して頂きありがとうございます。表示するImageデータを

    別に用意する等を検討してみます。

    ありがとうございました。

    2015年3月4日 23:19
  • 表示するImageデータを別に用意する案でも出来ると思いますが、
    先に投稿したDrawImageDisabledを使用するほうがおそらく楽だと思いますので
    以下を参考にチャレンジしてみてください。

    http://dobon.net/vb/dotnet/graphics/drawimagedisabled.html

    http://www.atmarkit.co.jp/fdotnet/dotnettips/303drawdisable/drawdisable.html

    2015年3月5日 0:05
    モデレータ
  • VB2008の時は、黒が灰色に、赤がピンクにと彩度が

    下がる感じです。

    VB2008のアプリケーションで何か制御している可能性があります。
    可能であればVB2008で新たにプロジェクトを作成して、テストしてみて下さい。その結果、薄色表示になることが再現できた場合は、そのコード等をここに掲載していただければ、何かわかるかもしれません。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2015年3月5日 1:44
    モデレータ
  • Tak1waさん

    eがなんであるか分からなかったので下記によ試してみました。

    Dim e As PaintEventArgs

    ControlPaint.DrawImageDisabled( _
          e.Graphics, _
          Me.PictureBox1.Image, _
          0, 0, _
          Me.BackColor)

    デバッグは実行出来ましたが、この行で

    ”型 'System.NullReferenceException' のハンドルされていない例外が Bridge_Bid.exe で発生しました

    追加情報:オブジェクト参照がオブジェクト インスタンスに設定されていません。”

    とエラーメッセージが出てデバッグが停止しました。

    使い方の誤りを教えて頂けると有難いです。


    2015年3月5日 13:11
  • ちゃんと周りのコードの意味も理解するように努めましょう。

    PicutreBox コントロールを選んで Paint イベントを作って、その中に書くという意味のコード断片が提示されています。

    2015年3月5日 13:17
    モデレータ
  • このあたりを参考に、PictureBoxのPaintイベントプロシージャを作成してみてください。

    そうすると自動で引数eなども設定されます。

    後は先に投稿したコードを入れてみてください。

    2015年3月5日 16:57
    モデレータ
  • trapemiyaさん

    回答ありがとうございます。

    VB2008で作成したプログラムんの制御コードをチェックしました。

    そこでは、薄色のImageを別に用意してそちらを表示するようにしていました。

    私の勘違いでお手数をおかけし、本当に申し訳ありませんでした。

    2015年3月6日 5:33
  • Tak1waさん

    ありがとうございます。

    VB2008では私の勘違いで、薄色のImageを別に用意していました。

    申し訳ございませんでした。

    私の今の力では理解するのは難しいようです。

    データが用意されていたので、今回もImageを切り替える方法取りたいと

    思います。

    教えて頂いた方法は私の今後の課題とさせて頂きたいと思います。

    その過程で判らないことがあったら改めて質問したいと思います。

    2015年3月6日 5:45
  • Azuleanさん

    ありがとうございます。

    今回は、断念することにしましたが助言して頂いた内容が理解

    できるようになるにはもう少し時間がいるようです。

    さらに皆さんに近づけるよう努力します。

    ありがとうございました。

    2015年3月6日 5:51