Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

カラーダイアログボックスでピクチャーボックスに描画した文字の色変更 解決済み

タグの編集...

投稿者   (高校生)   投稿日時 2016/8/10 11:41:23
カラーダイアログボックスを使ってピクチャーボックスに描画されている文字の色を変更したいのですができません。どのようにしたらよいでしょうか。
  Dim cd As New ColorDialog()

        cd.Color = mozi.ForeColor
        cd.AnyColor = False '仮 
        cd.AllowFullOpen = True
        cd.SolidColorOnly = True
        cd.ShowHelp = False
        If cd.ShowDialog() = DialogResult.OK Then
            mozi.ForeColor = cd.Color
        End If


こちらが失敗しているコードです。
mozi がピクチャーボックスです。


投稿者 魔界の仮面弁士   (社会人)   投稿日時 2016/8/10 12:44:49
> ピクチャーボックスに描画されている
PictureBox に描画させる手法は、
 (1) 画像を割り当てる
 (2) 自前で描画処理を記述する
の 2 択ですよね。

前者なら、別の色の画像を用意して差し替えるしか無いですし、
後者なら、その描画処理が「mozi.ForeColor」を使うように修正する必要がありますね。

Private Sub mozi_Paint(sender As Object, e As PaintEventArgs) Handles mozi.Paint
    Using b As New SolidBrush(mozi.ForeColor)
        e.Graphics.DrawString("Sample"Me.Font, b, Point.Empty)
    End Using
End Sub


投稿者   (高校生)   投稿日時 2016/8/11 10:20:48
返信ありがとうございます。描画している文字の色を変えることはできたのですが、魔界の仮面弁士さんが書いていただいたコードだと"Sampul"という文字を描画して色を変えているのですよね?
ここの部分を自分で書いた文字の色を変更したです。
前述のmoziというのはテキストボックスに書かれていた文字をピクチャーボックスに描画したものを表しています。

投稿者 魔界の仮面弁士   (社会人)   投稿日時 2016/8/11 10:58:32
先述したように、PictureBox への描画処理は、大きく分けて 2 パターンしかありません。
画像を割り当てる方法と、描画処理を自分で実装する方法です。

しかし、そのための手順は多数あります。

前者はさらに、前景画像もしくは背景画像を割り当てる方法と分かれます
(Image、BackgroundImage、InitialImage、ErrorImage、LoadAsync、ImageLocation など)
後者なら、Graphics クラスに対して処理する方法(Paint、OnPaint、CreateGraphics など)や
デバイスコンテキストに対して描画する方法などがあります。

また、単に文字列を表示するといっても、PictureBox の上に Label を貼る方法や
ID3DXFont.DrawText メソッド
Graphics.DrawString メソッド
TextRenderer.DrawText メソッド
TextBoxRenderer.DrawTextBox メソッド
Control.DrawToBitmap メソッド
OleDraw 関数
TextOutW 関数
などなど、数多くの手段があるわけです。


実際に東さんがどのように処理したのかは、こちらでは分かりませんが、いずれにせよ
単に PicureBox を貼っただけでは、mozi に文字列が表示されることはありません。

「テキストボックスに書かれていた文字をピクチャーボックスに描画」させたのは
他ならぬ東さんなのですから、ご自身でその部分を手直しする必要がありますね。

投稿者   (高校生)   投稿日時 2016/8/11 11:12:57
説明不足で申し訳ありませんでした。
自分が使っているのはGraphics.DrawString メソッドです。


投稿者 魔界の仮面弁士   (社会人)   投稿日時 2016/8/11 11:33:55
??? Graphics.DrawString での描画色を変更するサンプルは、既に提供していますよね…?

投稿者   (高校生)   投稿日時 2016/8/11 14:02:58
そうでした。申し訳ありません。
いろいろとありがとうございました。