教えてください!!
投稿者 緋竜  (小学生)
投稿日時
2008/10/29 05:46:18
難しい質問だと、ココの掲示板の人達は黙秘権を使う感じです(笑)
ARGBとかToArgbとかknownColorとか、まぁ難しそうですよ。
ARGBとかToArgbとかknownColorとか、まぁ難しそうですよ。
投稿者 葉月  (社会人)
投稿日時
2008/10/29 06:16:49
サンプルコードを書きました。
pictureboxとlabel3つを用意してください。
>>>サンプルコード
Public Class Form1
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
Dim bmpSample As Bitmap = PictureBox1.Image
If bmpSample IsNot Nothing Then
Label1.Text = bmpSample.GetPixel(e.X, e.Y).ToString
End If
Label2.Text = e.X.ToString
Label3.Text = e.Y.ToString
End Sub
End Class
>>>補足
①pictureBox1のImageには、使用する画像のパスを指定してください。
②ラベルは以下の用途に使っています。
label1 RGB
label2 X座標
label3 Y座標
pictureboxとlabel3つを用意してください。
>>>サンプルコード
Public Class Form1
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
Dim bmpSample As Bitmap = PictureBox1.Image
If bmpSample IsNot Nothing Then
Label1.Text = bmpSample.GetPixel(e.X, e.Y).ToString
End If
Label2.Text = e.X.ToString
Label3.Text = e.Y.ToString
End Sub
End Class
>>>補足
①pictureBox1のImageには、使用する画像のパスを指定してください。
②ラベルは以下の用途に使っています。
label1 RGB
label2 X座標
label3 Y座標
投稿者 あ  (学生)
投稿日時
2008/10/29 07:02:20
もしかして同じ人?
http://hanatyan.sakura.ne.jp/vb60bbs/wforum.cgi?mode=allread&no=13194&page=0
違ったらスマソ
http://hanatyan.sakura.ne.jp/vb60bbs/wforum.cgi?mode=allread&no=13194&page=0
違ったらスマソ
投稿者 あ  (学生)
投稿日時
2008/10/29 08:39:39
ありゃ、リンク先記事消しちゃってやんの。
因みにリンク先は「画面上のカーソル位置の色を取得したい。(他ウィンドウ上のも含め)」
みたいな話題やったとです。
リンク先でリンクされてた↓の続きみたい。
http://www.hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=8249&page=330
でも、こっちの人は「画像上の」って言ってるし別に関係無かったですね。
すいません、忘れてください。
因みにリンク先は「画面上のカーソル位置の色を取得したい。(他ウィンドウ上のも含め)」
みたいな話題やったとです。
リンク先でリンクされてた↓の続きみたい。
http://www.hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=8249&page=330
でも、こっちの人は「画像上の」って言ってるし別に関係無かったですね。
すいません、忘れてください。
投稿者 緋竜  (小学生)
投稿日時
2008/10/29 08:48:27
質問者とは違いますが。
葉さん、ありがと。
わたしもわからんかったから。
(^_^@)
葉さん、ありがと。
わたしもわからんかったから。
Option Strict On
Public Class form1
'VisualBasic 2008
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
Dim bmpSample As Bitmap = CType(PictureBox1.Image, Bitmap)
If bmpSample IsNot Nothing Then
Label1.Text = bmpSample.GetPixel(e.X, e.Y).ToString
End If
Label2.Text = e.X.ToString
Label3.Text = e.Y.ToString
End Sub
End Class
(^_^@)
投稿者 緋竜  (小学生)
投稿日時
2008/10/29 09:34:34
ああ、それとね、{あ}さん、直URLを貼り付けてもIE8はジャンプしません。
まぁ、他の検索バーは知らんが。
まぁ、他の検索バーは知らんが。
投稿者 みか  (学生)
投稿日時
2008/10/29 22:32:16
なんとか思い描いてた感じに近づいてきました。
ありがとうございました!!
ちなみにこういった掲示板を利用されていいただいたのは初めてです。
卒業研究が切羽詰ってまして…
また質問されていただくかもしれません。
皆様ありがとうございました。
ありがとうございました!!
ちなみにこういった掲示板を利用されていいただいたのは初めてです。
卒業研究が切羽詰ってまして…
また質問されていただくかもしれません。
皆様ありがとうございました。
投稿者 緋竜  (小学生)
投稿日時
2008/10/30 01:46:28
変数代入
{宣言」
private Syutoku_Color As Color.FromArgb(0)
変更点
label.textのとこ
Syutoku_Color=bmp Sample.getPixel(e.X,e.Y)
VisualBasic2008(無料版)
理解できたら、キャラクタ制作エディターを自作できるかも。
では。
{宣言」
private Syutoku_Color As Color.FromArgb(0)
変更点
label.textのとこ
Syutoku_Color=bmp Sample.getPixel(e.X,e.Y)
VisualBasic2008(無料版)
理解できたら、キャラクタ制作エディターを自作できるかも。
では。
投稿者 さくら  (社会人)
投稿日時
2008/10/30 05:02:21
画面をキャプチャするというのと、組み合わせるとより思い描いたものに近づくと思います。
参考「画面をキャプチャする」
http://dobon.net/vb/dotnet/graphics/screencapture.html
参考「画面をキャプチャする」
http://dobon.net/vb/dotnet/graphics/screencapture.html
投稿者 みか  (学生)
投稿日時
2008/11/13 00:44:12
分解したRGBの表示まではできたのですが、座標(0,0)から(100,100)までのRGBのデータをエクセルに送るやり方が分かりません。
アドバイスください。
アドバイスください。
投稿者 桜  (社会人)
投稿日時
2008/11/13 04:52:24
うまくいかれたのですね。
良かったです。
出来れば、現在どのようにやっているかを教えて頂けないでしょうか。
その方が、回答者の方もそれに合わせて回答できると思うので、回答の結果をみかさんのプログラムに取り込みやすくなると思います。
あと、ちょっと質問でわからないところがあるのですが教えてください。
# わからない所1
> 分解したRGBの表示
何をどのように分解してどのように表示してるのでしょうか。
# わからない所2
> 座標(0,0)から(100,100)までのRGBのデータ
これはどのように取得しているのでしょうか?
それともここもわからないのでしょうか。
わからない部分でしたら、(0,0)から(100,100)のデータをどのような形(操作)で取得したいと思っているのでしょうか。
# わからない所3
> エクセルに送る
送るというのはどういうことをお考えですか?
ぱっと思いつくだけで
1.xls形式のファイルに保存したい
2.ファイル形式は何でもいいから、とにかくExcelで開きたい
3.現在起動しているExcelの指定した場所にデータを表示させたい
等が考えられます。
後は、Excelに送るときの形も
1.1セルに100×100のデータを入れたいのか(入れるとしたらどんな風に?)
2.1セルに1ピクセルのデータを入れるのか
3.そもそもExcelのセルの背景色を変えたいのか
等色々考えられます。
良かったです。
出来れば、現在どのようにやっているかを教えて頂けないでしょうか。
その方が、回答者の方もそれに合わせて回答できると思うので、回答の結果をみかさんのプログラムに取り込みやすくなると思います。
あと、ちょっと質問でわからないところがあるのですが教えてください。
# わからない所1
> 分解したRGBの表示
何をどのように分解してどのように表示してるのでしょうか。
# わからない所2
> 座標(0,0)から(100,100)までのRGBのデータ
これはどのように取得しているのでしょうか?
それともここもわからないのでしょうか。
わからない部分でしたら、(0,0)から(100,100)のデータをどのような形(操作)で取得したいと思っているのでしょうか。
# わからない所3
> エクセルに送る
送るというのはどういうことをお考えですか?
ぱっと思いつくだけで
1.xls形式のファイルに保存したい
2.ファイル形式は何でもいいから、とにかくExcelで開きたい
3.現在起動しているExcelの指定した場所にデータを表示させたい
等が考えられます。
後は、Excelに送るときの形も
1.1セルに100×100のデータを入れたいのか(入れるとしたらどんな風に?)
2.1セルに1ピクセルのデータを入れるのか
3.そもそもExcelのセルの背景色を変えたいのか
等色々考えられます。
投稿者 (削除されました)  ()
投稿日時
2008/11/20 06:54:05
(削除されました)
投稿者 葉月  (社会人)
投稿日時
2008/11/20 08:21:52
昨日、気づいたのでいまさらですが……
他の利用者の参考になるかも知れません。制約つきでサンプルコードを掲載します。
制約の説明は、以下になります。
>分解したRGBの表示まではできたのですが、座標(0,0)から(100,100)までのRGBのデータをエクセルに送るやり方が分かりません。
座標0:0~100:100のRGBを取得するのは、処理に負担がかかるため範囲を狭くしています。
スペックのあるマシーンなら制約なしでも動作しますが、処理が終わるまでビジー状態になるためプログレスバーが必要になります。
>>>サンプルコード
'参照の追加を行う必要があります。詳しくは、注意点を参考にしてください。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Excelファイルを保存するフルパスを指定してください。
Dim strPathXls As String = "フルパスを指定してください"
Dim bmpSample As Bitmap = PictureBox1.Image
Dim xlsApp As New Excel.Application
Dim xlsBooks As Excel.Workbooks = xlsApp.Workbooks
Dim xlsBook As Excel.Workbook = xlsBooks.Add
Dim xlsSheets As Excel.Sheets = xlsBook.Worksheets
Dim xlsSheet As Excel.Worksheet = xlsSheets.Item(1)
Dim xlsCells As Excel.Range
Dim xlsRange As Excel.Range
xlsCells = xlsSheet.Cells
'次のセルへ進む
Const INT_CELL_NEXT = 1
'列を1行目に戻す
Const INT_ROW_BACK = 1
'列
Dim intRow As Integer = 1
'行
Dim intLine As Integer = 1
For i As Integer = 0 To 10
For j As Integer = 0 To 10
xlsRange1 = DirectCast(xlsCells(intLine, intRow), Excel.Range)
xlsRange1.Value = bmpSample.GetPixel(i, j).A.ToString
LeaseObject(xlsRange1)
intRow += INT_CELL_NEXT
xlsRange1 = DirectCast(xlsCells(intLine, intRow), Excel.Range)
xlsRange1.Value = bmpSample.GetPixel(i, j).R.ToString
LeaseObject(xlsRange1)
intRow += INT_CELL_NEXT
xlsRange1 = DirectCast(xlsCells(intLine, intRow), Excel.Range)
xlsRange1.Value = bmpSample.GetPixel(i, j).G.ToString
LeaseObject(xlsRange1)
intRow += INT_CELL_NEXT
xlsRange1 = DirectCast(xlsCells(intLine, intRow), Excel.Range)
xlsRange1.Value = bmpSample.GetPixel(i, j).B.ToString
LeaseObject(xlsRange1)
intRow = INT_ROW_BACK
intLine += INT_CELL_NEXT
Next
Next
xlsSheet.SaveAs(strPathXls)
LeaseObject(xlsSheet)
LeaseObject(xlsSheets)
xlsBook.Close(False)
LeaseObject(xlsBook)
LeaseObject(xlsBooks)
xlsApp.Quit()
LeaseObject(xlsApp)
Me.Close()
End Sub
Private Sub LeaseObject(Of T As Class)(ByRef objCom As T, Optional ByVal lease As Boolean = False)
If objCom Is Nothing Then
Return
End If
Try
If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then
If lease Then
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objCom)
Else
Dim count As Integer = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom)
If 0 < count Then
Dim strMsg As String = "開放されていないオブジェクトがあります"
Dim strTitle As String = "オブジェクトの開放"
MessageBox.Show(strMsg, strTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End If
End If
Finally
objCom = Nothing
End Try
End Sub
>>>注意点
①参照の追加を行う必要があります。
プロジェクト(P)→参照の追加→COMタブ→Microsoft Excel ~(*1) Object Library
*1 ~入る数字は、利用者の環境により変化します。
②strPathXls変数に、処理するExcelファイルのフルパスを指定する必要があります。
OSがVistaの場合は、パスの指定場所に注意してください。
③参考程度にしてください。
他の利用者の参考になるかも知れません。制約つきでサンプルコードを掲載します。
制約の説明は、以下になります。
>分解したRGBの表示まではできたのですが、座標(0,0)から(100,100)までのRGBのデータをエクセルに送るやり方が分かりません。
座標0:0~100:100のRGBを取得するのは、処理に負担がかかるため範囲を狭くしています。
スペックのあるマシーンなら制約なしでも動作しますが、処理が終わるまでビジー状態になるためプログレスバーが必要になります。
>>>サンプルコード
'参照の追加を行う必要があります。詳しくは、注意点を参考にしてください。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Excelファイルを保存するフルパスを指定してください。
Dim strPathXls As String = "フルパスを指定してください"
Dim bmpSample As Bitmap = PictureBox1.Image
Dim xlsApp As New Excel.Application
Dim xlsBooks As Excel.Workbooks = xlsApp.Workbooks
Dim xlsBook As Excel.Workbook = xlsBooks.Add
Dim xlsSheets As Excel.Sheets = xlsBook.Worksheets
Dim xlsSheet As Excel.Worksheet = xlsSheets.Item(1)
Dim xlsCells As Excel.Range
Dim xlsRange As Excel.Range
xlsCells = xlsSheet.Cells
'次のセルへ進む
Const INT_CELL_NEXT = 1
'列を1行目に戻す
Const INT_ROW_BACK = 1
'列
Dim intRow As Integer = 1
'行
Dim intLine As Integer = 1
For i As Integer = 0 To 10
For j As Integer = 0 To 10
xlsRange1 = DirectCast(xlsCells(intLine, intRow), Excel.Range)
xlsRange1.Value = bmpSample.GetPixel(i, j).A.ToString
LeaseObject(xlsRange1)
intRow += INT_CELL_NEXT
xlsRange1 = DirectCast(xlsCells(intLine, intRow), Excel.Range)
xlsRange1.Value = bmpSample.GetPixel(i, j).R.ToString
LeaseObject(xlsRange1)
intRow += INT_CELL_NEXT
xlsRange1 = DirectCast(xlsCells(intLine, intRow), Excel.Range)
xlsRange1.Value = bmpSample.GetPixel(i, j).G.ToString
LeaseObject(xlsRange1)
intRow += INT_CELL_NEXT
xlsRange1 = DirectCast(xlsCells(intLine, intRow), Excel.Range)
xlsRange1.Value = bmpSample.GetPixel(i, j).B.ToString
LeaseObject(xlsRange1)
intRow = INT_ROW_BACK
intLine += INT_CELL_NEXT
Next
Next
xlsSheet.SaveAs(strPathXls)
LeaseObject(xlsSheet)
LeaseObject(xlsSheets)
xlsBook.Close(False)
LeaseObject(xlsBook)
LeaseObject(xlsBooks)
xlsApp.Quit()
LeaseObject(xlsApp)
Me.Close()
End Sub
Private Sub LeaseObject(Of T As Class)(ByRef objCom As T, Optional ByVal lease As Boolean = False)
If objCom Is Nothing Then
Return
End If
Try
If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then
If lease Then
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objCom)
Else
Dim count As Integer = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom)
If 0 < count Then
Dim strMsg As String = "開放されていないオブジェクトがあります"
Dim strTitle As String = "オブジェクトの開放"
MessageBox.Show(strMsg, strTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
End If
End If
Finally
objCom = Nothing
End Try
End Sub
>>>注意点
①参照の追加を行う必要があります。
プロジェクト(P)→参照の追加→COMタブ→Microsoft Excel ~(*1) Object Library
*1 ~入る数字は、利用者の環境により変化します。
②strPathXls変数に、処理するExcelファイルのフルパスを指定する必要があります。
OSがVistaの場合は、パスの指定場所に注意してください。
③参考程度にしてください。
よろしくお願いします!!