掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CreateDIBSectionでエラーとなってしまいます。 (ID:146051)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
aetos様返答ありがとうございます。 memDC、hDIBSection、hOldBmp、lpDIB をIntPtr にしました。 仮にlpDIB=0 として見ましたが、やはりエラーとなります。 コードの詳細を記載させて頂きます。 間違えている所がありましたら、皆様御指摘よろしくお願いします。 ’API宣言 Public Declare Function SetDIBColorTable Lib "gdi32" (ByVal hdc As IntPtr, ByVal uStartIndex As Integer, ByVal cEntries As Integer, ByVal pColors As RGBQUAD) As Integer Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As IntPtr) As Integer Public Declare Function CreateDIBSection Lib "gdi32" (ByVal hdc As IntPtr, ByVal pBitmapInfo As BITMAPINFOHEADER, ByVal un As Integer, ByVal lplpVoid As Integer, ByVal handle As Integer, ByVal dw As Integer) As Integer Public Declare Function SelectObject Lib "GDI32" (ByVal hDC As Integer, ByVal hObject As Integer) As Integer Public Declare Function StretchDIBits Lib "GDI32" (ByVal hDC As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal SrcX As Integer, ByVal SrcY As Integer, ByVal wSrcWidth As Integer, ByVal wSrcHeight As Integer, ByRef lpBits As Byte, ByRef lpBitsInfo As BITMAPINFOHEADER, ByVal wUsage As Integer, ByVal dwRop As Integer) As Integer Public Const SRCCOPY As Integer = &HCC0020 Dim bmpInfo As BITMAPINFOHEADER Dim bmiColors(255) As RGBQUAD ' DIBカラー設定格納 Dim memDC As IntPtr Dim hDIBSection As IntPtr Dim hOldBmp As IntPtr Dim lpDIB As IntPtr Dim hdc As IntPtr Dim PixelData(76800) As Byte 'BITMAPINFOHEADER bmpInfo.biBitCount = 8 ' カメラからの出力が8bitなので8を設定 bmpInfo.biClrImportant = 0 bmpInfo.biClrUsed = 0 bmpInfo.biCompression = 0 bmpInfo.biHeight = 240 bmpInfo.biPlanes = 1 bmpInfo.biSize = 40 ' SizeOf(BITMAPINFOHEADER) bmpInfo.biSizeImage = 76800 bmpInfo.biWidth = 320 bmpInfo.biXPelsPerMeter = 0 bmpInfo.biYPelsPerMeter = 0 For i = 0 To 255 bmiColors(i).rgbBlue = i bmiColors(i).rgbGreen = i bmiColors(i).rgbRed = i bmiColors(i).rgbReserved = 0 Next i ' デバイスコンテキストハンドル取得 hdc = Form1.Picture1.CreateGraphics.GetHdc 'まずはメモリDCを作る memDC = CreateCompatibleDC(hdc) 'DIBSectionを作る hDIBSection = CreateDIBSection(memDC, bmpInfo, DIB_RGB_COLORS, lpDIB, 0, 0) 'DIBSectionとhMemDCを関連付ける hOldBmp = SelectObject(memDC, hDIBSection) 'カラーパレットを変更する SetDIBColorTable(memDC, 0, 255, bmiColors(0)) '画像を表示する StretchDIBits(hdc, 0, 0, 320, 240, 0, 0, 320, 240, PixelData(0), bmpInfo, DIB_RGB_COLORS, SRCCOPY) よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.