bcb中如何從一張png中扣出自己想要的部分,比如已知要扣取的x,y,width,height,怎么從原png中扣出這部分圖
uj5u.com熱心網友回復:
一個曲線的方法是,先轉成bitmap圖,然后處理,呵呵uj5u.com熱心網友回復:
轉bmp透明效果就不在了,主要是要把透明效果帶上uj5u.com熱心網友回復:
呼叫TPNGImage即可uj5u.com熱心網友回復:
@OptPhantom 呼叫TPNGImage怎么弄?怎么扣出一部分圖呢?uj5u.com熱心網友回復:
問題已解決:struct pngcropinfo_s
{
TPngImage* png;
int x;
int y;
int w;
int h;
};
void __fastcall TPngWrapper::GetDestImage(TPngImage* Src, TPngImage* DestImg, pictureinfo_t* pic)
{
PByteArray p1 ,p2;
PByteArray pa1 ,pa2;
int sX, sY, dX, dY;
sY = pic->y;
dY = 0;
while(sY < (pic->y + pic->h))
{
if ((sY >= Src->Height))
break;
sX = pic->x;
dX = 0;
while(sX < (pic->x + pic->w))
{
if (sX >= Src->Width) {
break;
}
PByteArray(DestImg->Scanline[dY])->data[3 * dX] = PByteArray(Src->Scanline[sY])->data[3 *sX];
PByteArray(DestImg->Scanline[dY])->data[3 * dX + 1] = PByteArray(Src->Scanline[sY])->data[3 *sX + 1];
PByteArray(DestImg->Scanline[dY])->data[3 * dX + 2] = PByteArray(Src->Scanline[sY])->data[3 *sX + 2];
PByteArray(DestImg->AlphaScanline[dY])->data[dX] = PByteArray(Src->AlphaScanline[sY])->data[sX];
sX++;
dX++;
}
sY++;
dY++;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/78724.html
標籤:基礎類
上一篇:請教一個命名管道的問題
下一篇:dev c++
