私はwxPythonを学んでいます。私の質問は、ビットマップを作成する方法です。各ピクセルにR、G、Bの値がありますが、そこからビットマップを作成する方法がわかりません。wx.BitmapFromBufferを使用してみましたが、このバッファーを作成する方法がわかりません。私は各ピクセルを調べ、線形にR、G、Bコンポーネントのリストを作成しましたが、期待どおりの結果は得られませんでした。バッファの構築方法を理解していますか?
速度が遅すぎるため、wx.MemoryDCを使用してビットマップに各ピクセルを描画したくありません。
ありがとうございました!
編集:wxPythonデモのアプローチを使用します-RawBitmapAccess。
buf = numpy.empty((w,h,3), numpy.uint8)
n = 29000
for i in xrange(w):
for j in xrange(h):
r = int(n*255*field[j,i])
if r > 253:
r = 253
buf[i, j, 0] = int(r)
buf[i, j, 1] = int(r)
buf[i, j, 2] = int(b)
#dc.SetPen(wx.Pen(wx.Colour(r,r,b)))
#dc.DrawPoint(i,j)
bmp = wx.BitmapFromBuffer(w, h, buf)
gc = wx.GraphicsContext.Create(dc)
gc.DrawBitmap(bmp, 0, 0, w, h)
以前の描画方法(ループ内のコメント付きの2本の線)のコメントを外すと、必要なもの(1つのファジーボール)が得られます。私が奇妙な絵を持っていることを彼らにコメント解除しないと、それはいくつかの断片のために垂直に分割され、それぞれがそれ自身のファジーボールを持っています、そしてそれは失われたピクセルの垂直線があるように見えます。デモプログラムと同じようにバッファを使用します。なぜ私は奇妙な写真を撮るのですか?
Edit2:わかりました。ループ内でiとjを交換する必要があります。