|
: 진수네모님이 알려주신 소스입니다...
: 근데 여기서 구조체 정의부분을 잘 모르겟씁니다.. bmp포맷의 사이즈에 맞게 long int 형식으로 각각의 구제체안에 변수를 선언해 주는건가요?
: 그리고 만약 tcp로 들어온 데이타를 가지고 폼에서 불러올때 어떤식으로 해야 하는지요?
: 이미지 폼이라던가..? 아님 다른것 어떤게 있을까요...
네모님은 파일이 아닌 메모리로 받은 데이터를 파일로 만드는 법을 알려주신 겁니다.
쉽게 생각하면 비트맵 파일은 파일 헤더 + 비트맨 내용으로 구성되어 있는 거죠...
그래서 데이타만 받았으니까 앞에다가 헤더를 추가해서 파일로 적으면 비트맵파일이 되는거죠
대신 맞춰줘야 할 내용들을 잘 맞추어 줘야 제대로 되겠죠?
그냥 제 생각엔 네트웍으로 들어온 데이타를 받았다면.. 비트맵 개체에다 받아온 한라인 한라인씩 넣어준 다음
Raw데이타를 다 채우면 화면에 드로잉 하면 되지않을까 합니다.
예제는 이와 같이 ....
참고) TBitmap 의 ScanLine 메소드 입니다. 아래 예제도 찾아보시면 나올겁니다...
첫 영문이 맘에 들지 않습니까? 이 예제는 비트맵에 직접 드로잉하는 걸 보여준다..ㅋㅋ
//// This example shows drawing directly to the Bitmap
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
Byte *ptr;
try
{
pBitmap->LoadFromFile("C:\\Program Files\\Common Files\\Borland Shared\\Images\\Splash\\256color\\factory.bmp");
/// 이렇게 파일에서 읽어오는 것 말고 네트윅으로 들어온 데이타를 사용하면 되겠죠..한라인씩 아래 loop처럼
/// 복사해주면 되지 않을까요..
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); /// 드로잉 하겠죠?
}
catch (...)
{
ShowMessage("Could not load or alter bitmap");
}
delete pBitmap;
|