仕様としてはこの方が美しいと言える部分もあります。
こうなってる理由もわかります。
でも、やっぱいただけないかなー。
だって#ifdefかかなきゃなんないもんね。。。^^;
ということで、画像を扱う第一歩として、
画像を読み込んで表示させて、メモリを操作して線を描画して表示させるなんてことをやってみました。
●TBitmapに読み込む
●TImageにわりつける
●TImage::TBitmapのデータポイントを取得する
●直書きしてみる
っとまぁ、そんなとこです。
で、ですね。。。例によって、WIN32とAndroidの結果ですが。。。。
★WIN32 ★Android
そうです。線の色が違う。
そしてデータを取ってきたときの内容が違う。
WIN32の方は、B-G-R-Aの順。
Andridの方は、R-G-B-Aの順。
もちろん、理由はなんとなくわかりますけどねー。
でもねーー。。せっかくOneソースなんだから。。。
なんとかして欲しかったなぁーー。
TBitmap* bmp = new TBitmap; String gfile = TPath::Combine(TPath::GetDocumentsPath(), "gazou.png"); bmp->LoadFromFile(gfile); TI->Bitmap = bmp; TBitmapData B; TI->Bitmap->Map(TMapAccess::maReadWrite,B); unsigned char* cp = (unsigned char*)B.Data; AnsiString as; for(int w=0;w<100;w+=4){ as.printf("[%02x][%02x][%02x][%02x]",cp[w*4+0],cp[w*4+1],cp[w*4+2],cp[w*4+3]); M1->Lines->Add(as); } for(int w=0;w<100;w++){ char* ccp = (char*)B.GetPixelAddr(w,w); ccp[0] = 0x0; ccp[1] = 0x0; ccp[2] = 0xff; ccp[3] = 0xff; ccp[0+4] = 0x0; ccp[1+4] = 0x0; ccp[2+4] = 0xff; ccp[3+4] = 0xff; ccp[0+8] = 0x0; ccp[1+8] = 0x0; ccp[2+8] = 0xff; ccp[3+8] = 0xff; } TI->Bitmap->Unmap(B);
0 件のコメント:
コメントを投稿