- 855 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 00:35:28 ]
- >>843
Win32スレで聞いているうちにバグの原因がわかったので、 AlphaBlend per Pixelのプログラムを貼っておきます。 void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap* bt = new Graphics::TBitmap; BLENDFUNCTION blend = {AC_SRC_OVER, 0, 255, AC_SRC_ALPHA}; TImage* ti = Image1; RGBQUAD rgbq; bt->Width = 256; bt->Height = 256; bt->PixelFormat = pf32bit; int k = 0; for (int i = 0; i < 255; i++, k++) { int* sc = reinterpret_cast<int*>(bt->ScanLine[i]); for (int j = 0; j < 255; j++) { rgbq.rgbBlue = i; rgbq.rgbGreen = j; rgbq.rgbRed = 0; rgbq.rgbReserved = k; sc[j] = reinterpret_cast<int&>(rgbq); } } BOOL RESULT = ::AlphaBlend(ti->Canvas->Handle, 0, 0, ti->Width, ti->Height, bt->Canvas->Handle, 0, 0, bt->Width, bt->Height, blend); int err = GetLastError(); const wchar_t* str = WideString().sprintf(L"失敗!%d", err).c_bstr();
|

|