델파이 자료이긴 합니다만...
http://www.efg2.com/Lab/ImageProcessing/Scanline.htm#Scanline
을 한번 읽어보세요. 도움이 되실겁니다.
사악도인 님이 쓰신 글 :
: 안녕하세요?
: 다름이 아니라 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; 왜 이렇게 써넣는지 궁금합니다.
:
: 별것도 아닌내용을 넘 길게 적어놨네요.. 민망합니다...^^;;;;
: 답변좀 부탁드리겠습니다.
|