|
안녕하세요?
다름이 아니라 ScanLine Help파일을 보다가 의문점이 있어서 문의드립니다.
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
// This example shows drawing directly to the Bitmap
Byte *ptr;
try
{
pBitmap->LoadFromFile("MyBitmap.png");
for (int y = 0; y < pBitmap->Height; y++)
{
ptr = (Byte *)pBitmap->ScanLine[y];
for (int x = 0; x < pBitmap->Width; x++)
ptr[x] = (Byte)y;
}
Canvas->Draw(0,0,pBitmap);
}
위내용은 아시다 시피 빌더 Help에 있는 내용입니다. 제가 이부분을 소스에 추가해서 디버깅을 해본결과,
ptr = (Byte *)pBitmap->ScanLine[y]; 이부분이 실행시에 ptr에는 디버깅으로 확인할때 null 값이 들어가 있다는
겁니다. 그리고 밑에 for 문에서 ptr[x] = (Byte)y;
y값을 ptr[x]에 Byte type으로 값을 넣는데
1. 왜 ScanLine으로 값을 읽어와서 ptr[x] = (Byte)y; 으로 값을 넣는지 잘 이해가 안갑니다.
포인터 ptr이 ScanLine함수를 통해서 값을 읽어왔는데 왜 밑에서 다시 for 문을 돌려서 ptr에다 다시 값을 써는지?
2. 읽어온 값을 ptr[x] = (Byte)y; 왜 이렇게 써넣는지 궁금합니다.
별것도 아닌내용을 넘 길게 적어놨네요.. 민망합니다...^^;;;;
답변좀 부탁드리겠습니다.
|