• ベストアンサー

VB.netでRGB関数を使うには

こんにちは。 表題の通り、VB.netでRGB関数を使って背景色を変えたいんですが、以下のように入力してもエラーになってしまいます。VB6.0ではこれで通用すると書いてあり大丈夫だと思ったんですが、どこをどう直せばいいんでしょうか? Dim red,green,blue As Integer (red,green,blueの値は、他のコントロールから取得) PictureBox1.backcolor = RGB(red,green,blue) よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

VB.NETは未経験ですが、 System.Drawing.ColorTranslator.FromOleで変換すればよいかも

参考URL:
http://www.microsoft.com/japan/msdn/library/ja/vbcon/html/vberrColorChangesInVisualBasicNET.asp
hibachi
質問者

お礼

回答ありがとうございます。 System.Drawing.ColorTranslator.FromOleでは、Oleカラーを指定するそうですが、RGBのように3原色を指定するのではなく、変数は1つしかとらないようです。誰かOleカラーについて詳しい方いないでしょうか?

hibachi
質問者

補足

すいません。おっしゃる通りSystem.Drawing.ColorTranslator.FromOle(RGB(red,geen,blue))で変換できました。こういう書式になるとは気がつきませんでした。お騒がせしました。

その他の回答 (2)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

環境がないので全て推測です。正確なことが言えなくてすいません。 MSDNOnlineを見たところ、RGB関数の仕様に変更が見られません。 PictureBox1.Backcolor = RGB(255,0,0) がダメで PictureBox1.Backcolor = &H0 ができるのなら、完全にRGBのせいですね。 おそらく、ライブラリが破損しているのかも知れませんね。 (推測ですので、再インストールを自信を持ってお勧めできないところが情けないデス) 「型"integer"の値を"system.drawing.color"に変換できません」 て事はIntを変換失敗しているみたいなので、 RGB(255,0,0) → RGB(Cbyte(255),Cbyte(0),Cbyte(0)) でもダメでしょうか? それがダメなら、オリジナルRGB関数を作ってみてはいかがでしょう。 http://www.microsoft.com/japan/developer/library/script56/vsfctrgb.htm VB.NET環境のある人にバトンタッチデス・・・

hibachi
質問者

お礼

回答ありがとうございます。 う~ん、うまくいかないみたいです。 自分でももうちょっと調べてみます。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

red,green,blueに入っている値が不正なのでは? 「エラーが出たからどうしたらよい?」 ではなくて、どのようなエラーが出ていて、変数にセットされている値を書かないと答えようが無いように思うのは私だけ?

hibachi
質問者

補足

言葉足らずですいません。 例えば、formにピクチャーボックスとボタンを貼り付け、以下の構文をVB6.0とVB.netの両方で実行してみてください。 PictureBox1.Backcolor = RGB(255,0,0) VB6.0では問題なく実行できますが、VB.netでは、「 型"integer"の値を"system.drawing.color"に変換できません 」とエラーメッセージがでるんです。VB.netでのみ起こる原因がわからず質問させていただきました。 誰かわかる方、お教えてください。

関連するQ&A

  • WORD VBA

    マウスがある位置の色の情報を表示するソフトを利用して、 RGB情報を得ています。(例 RGB(204, 035, 035) 。 次のWORDマクロ動かし、RGB情報を手入力して欲しい結果を得ています。しかし、せっかくクリップボードに”RGB(204, 035, 035)”が入っていますので、それを自動的に以下のマクロに取り入れたいと考えております。どのようにすれば良いかアドバイスお願いできないでしょうか? なお, OSはWindows7を使用しています。Wordは2007です。 Sub ColorPaste() ' Dim Red As Integer Dim Green As Integer Dim Blue As Integer Red = InputBox("赤の数字を入れてください。") Green = InputBox("緑の数字を入れてください。") Blue = InputBox("青の数字を入れてください。") Selection.InlineShapes(1).Fill.BackColor = RGB(Red, Green, Blue) End Sub

  • VB6のTYPE文をVB.NETのStructureに変えるとき

    VB6のTYPE文をVB.NETのStructureに変えるとき 下記VB6のコードをVB.NETのStructureに変える場合 Type kouzou1 i As Integer j As Integer a As String * 20 b As String * 50 End Type を下記にしてみたのですが *20,*50のところは、どのように表現するのでしょうか。 Structure kouzou1 Dim i As Integer Dim j As Integer Dim a As String * 20 <- ステートメントの終わりを示してくださいのエラーになる。 Dim b As String * 50 <- ステートメントの終わりを示してくださいのエラーになる。 End Structure お教え下さい。

  • VB2005のピクチャーボックス内の図形の移動

    VB2005で、formにPictureBox一つと、Button三つをおいて、Button1で、PictureBoxに丸を書いて、Button2とButton3で、PictureBox内で、丸を右左に移動させようと考えています。で丸を書くことと、同じプロシジャー内では、移動させることはできました。が、別のプロシジャーから移動させるってことは出来るのでしょうか?VB2005をやり始めたばかりなのでてんでわかりません。どなたか詳しい方いらっしゃいましたら教えてください。よろしくお願いします。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim g As Graphics = PictureBox1.CreateGraphics() g.Clear(PictureBox1.BackColor) Dim w As Integer = PictureBox1.ClientSize.Width / 3 Dim h As Integer = PictureBox1.ClientSize.Height / 3 g.ResetTransform() g.DrawEllipse(Pens.Black, 0, 0, w, h) g.TranslateTransform(80, 50) g.DrawEllipse(Pens.Black, 0, 0, w, h) g.ResetTransform() g.Dispose() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim g As Graphics = PictureBox1.CreateGraphics() g.TranslateTransform(80, 50) End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click End Sub End Class

  • VB.netでのPictuerBoxに描写した内容の保存について。

    VB.netでのPictuerBoxに描写した内容の保存について。 PictureBoxに描写した内容を保存してみると、描写した項目事態は正しく保存されているのですが、背景が真っ黒になってしまいますこれは、なぜなのでしょうか? ソースは以下の様な感じです。 Dim bmp As Bitmap Dim g As Graphics bmp = New Bitmap(PictureBox1.Width, PictureBox1.Height) PictureBox1.Image = bmp g = Graphics.FromImage(PictureBox1.Image) g.DrawLine(Pens.AliceBlue, 0, 10, 20, 10) PictureBox1.Refresh() PictureBox1.Image.Save("test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg) どなたかわかる方よろしくお願いいたします。

  • VB2008 PaintイベントとResize

    VB初心者です VisualStudio2008 VBを使用しております 早速質問なのですが Form1にPictureBox1があり、プロパティDockがFillとします このピクチャーボックスの色を赤にして、左上から中心に向かって線を引きたいのですが Public Class Form1 Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint Dim p1XC, p1YC As Integer p1XC = PictureBox1.Width / 2 p1YC = PictureBox1.Height / 2 e.Graphics.Clear(Color.Red) e.Graphics.DrawLine(Pens.Black, 0, 0, p1XC, p1YC) End Sub -------------------------------------------------------------------------------- Private Sub PictureBox1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.Resize Dim p1XC, p1YC As Integer p1XC = PictureBox1.Width / 2 p1YC = PictureBox1.Height / 2 Dim g As Graphics = PictureBox1.CreateGraphics g.Clear(Color.Red) g.DrawLine(Pens.Black, 0, 0, p1XC, p1YC) End Sub End Class ↑は、おかしいですよね? eに書いてるのかgに書いているのか・・・ そもそも←の考え方がおかしいのか eの扱いがよくわからないです。 *同じ色だとわからないですが、色違いにすると大きくした時は増えた部分しか書かれてない *ペイントのみにしてしまうとサイズを小さくしたときに中心に線がいかない *リサイズのみだと元の部分しか塗られない こういう場合どうするのがいいのしょうか? 実際はもっと複雑な絵を描きたいので、イベントと描写を分けたいと思っているのですが・・・ どなたかご教示下さい。

  • RGB端子

    デジタルRGB端子 アナログRGB端子 って何のことなんでしょうか? Red(赤)、Green(緑)、Blue(青)という光の3原色。 はわかるんですが、プロジェクターにこの端子があるってことはいったいどういう意味があるのでしょうか? 

  • VB2005での画像処理

    各ピクセルの色情報を取得し,そのままコピーするプログラムです. 同じ大きさのPictureBox1とPictureBox2,それとButton1があります. エラーや警告は出ませんが,Button1をクリックしてもまったく動きません. 最終的にはPictureBox1を画像処理してPictureBox2に結果を表示させたいのですが,そのままコピーも出来ないため原因を探しています. A = picture1.GetPixel(i, j).ToArgb() picture2.SetPixel(i, j, color.FromArgb(A)) ではだめなのでしょうか.ご教授ください. -----以下プログラム------ Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer Dim j As Integer Dim A As Integer Dim picture1 As New Bitmap(PictureBox1.Image) Dim picture2 As New Bitmap(PictureBox2.Image) For j = 0 To PictureBox1.Width - 1 For i = 0 To PictureBox1.Height - 1 A = picture1.GetPixel(i, j).ToArgb() picture2.SetPixel(i, j, color.FromArgb(A)) Next Next End Sub

  • VB6でポインタ?

    VB6でポインタを扱う関数 VarPtrがあるのですが、使えるデータ型は何があるのでしょうか? 仕様なのか、動的配列のポインタが取得できません。 dim kosuu() as integer redim kosuu(50) dim pointer as long pointer = VarPtr( kosuu() ) 'エラー VB6でポインタを扱う場面は例えばどんな場合があるか知りたいです。 ポインタは使わない(使ってはいけない)のが基本でしょうか。

  • VB.NETのグラフィック描画について

    グラフィック描画ですが、引数を持たないサブルーチンプロシージャ(固定的な 目盛り等)は、PictureBox_paint(***イベントプロシージャ内に記述すればグラフィック描画ができます(e.Graphicsでグラフィックスオブジェクトを取得できる為)が、 X、Y座標を引数としたサブルーチンプロシージャを作り、その中でLineDraw(*****で描画させたい場合サブルーチンプロシージャ内に dim g As Graphics=pictureBox1.CreateGraphics() でグラフィックオブジェクトを生成しても 描画できないのですがどのようにすれば解決できるでしょうか(イメージがわかり難いかもしれませんのでサンプルを書きました) よろしくお願いします (1)private sub pictureBox1_paint(Byval sender as Object, Byval e as system****** e.Graphics.DrawLine(****** (これは描画できる) End Sub (2)private sub zahyou() ' 座標を生成するサブルーチンプロシージャ dim i as integer for i=0 to 10 hyouji( i , i*5 ) End Sub private sub hyouji( x as integer, y as integer) ’直線を引くサブルーチンプロシージャ dim g As Graphics=pictureBox1.CreateGraphics() g.DrawLine(***,x,y**** (これは描画できない)

  • VB4.0の「LSet」と同等の機能をVB2008で実行するには?

    VB2008の練習のために、VB4.0のコードをVB2008にコンバージョンしています。 VB4.0の「LSet」がどうしてもコンバージョンできません。 LSet 以外はVB2008で機能がありました。 なにか方法はないでしょうか。 リストをコピーします。 (投稿したらインデントが消えました) Public Type Tpstndef equip As Integer stn_no As Integer stn_class As Integer line_no As Integer stn_kind As Integer End Type Dim kdata As Tpkyokudef Dim rbuf As buf1K    ・   省略    ・ Get #fno, seeksize, rbuf LSet kdata = rbuf

専門家に質問してみよう