|
감사합니다.
윈도우가 Device(장치)에 저장하고 있지 않는다면.. 어떻게든 찾을 수 있겠네요.
정확히. 두번째 경우입니다. 이 구조를 다시 만들기 위한 연산 시간이 느립니다.
포럼 강좌에 있는 사용자 함수중...
=================================================================
WRgns=NULL;
for ( int j=0; j <yys; j ++ ) // 일일이 점 다 뒤져가며 찾으니.. 느림.. ㅡㅡ+
{
int RStart = -1; int REnd = -1;
for ( int i = 0; i <xxs; i ++ ) {
TColor TheColor = ((TColor )(tag00->Canvas->Pixels[i][j] & 0x00FFFFFF));
if (((TheColor!=clWhite)||(i==xxs-1))&&(RStart==-1))RStart = i;
if (((TheColor==clWhite)||(i==xxs-1))&&(RStart!=-1))
{ HRGN Aux; REnd = i - 1;
if (WRgns==0)WRgns=CreateRectRgn(RStart,j,REnd+1,j+1 ); // <---- 한줄한줄 추가.
else { Aux = CreateRectRgn (RStart,j,REnd+1,j+1);
CombineRgn( WRgns,WRgns,Aux,RGN_OR);
DeleteObject ( Aux ); }
RStart = -1;
}}}
=================================================================
이러합니다. 한줄한줄 더하는 방식입니다.
복잡한 모양의 폼 형태를 매번 들어갈때, 연산을 수행하니.. 길게는 10초 까지도 지연이 됩니다.
연산을 한번하고, 그 정보를 화일로 저장하여,(Maker를 만든후)
실제 프로그램에선 연산없이.. 알맹이(이미 연산된 결과)만 바로 적용해서, 최초 실행 속도를 올리려고 했습니다.
영인님 덕분에 포기하지 않고 계속 찾아 보려합니다.
감사합니다.
유영인 Cuperido 님이 쓰신 글 :
: CreateRectRgn, CombineRgn 를 사용해서 적용해본 적이 없어서
: 확실하게는 잘 모르겠습니다. 다만, 컴포넌트 및 폼 사이즈를 정하는 것이라면
: 각 컴포넌트의 WriteComponent 메소드를 이용해서 똑같이 파일로 저장할 수 있고
: 나중에 런타임시에 불러올 수 있습니다.
:
: HRGN 을 단순이 저장시키시려면, 스트럭쳐를 파일로 저장시킨 후 런타임시에
: 다시 불러오면 될 것 같은데요,
:
: 정확히 이 구조를 저장하셔서 런타임시에 다시 배치하실때 그 배치가 느리다는건지,
: 아니면, 이 구조를 다시 만들기 위한 연산 시간이 느린건지 그것이 궁금하네요.
:
: 첫번째의 경우라면 방법을 찾기는 어려우실 것 같고, 두번째의 경우에는 위에서
: 말씀드린 방법대로 하시면 될 것 같습니다.
:
:
: cuperido
:
:
: 코스모스 님이 쓰신 글 :
: : CreateRectRgn,CombineRgn 등의 함수로 영역을 만들었습니다.
: :
: : 이 영역의 버퍼를 안다면... Binary File로 저장 했으면 합니다.
: :
: : 자세한 코딩이 아니더라도.. 윈도우가 이 영역을 기억하고 있는지를 알고 싶습니다.
: :
: : 복잡한 모양의 Region을 만들었다 하더라도. 매번 실행할때 재구성 해야 하므로 프로그램이 느려집니다.
: :
: : Region을 만드는 방법은 알고 있으니, 윈도우가 기억하는 영역이 있는지 알려 주십시요.
: :
: : 만약 있다면, 열심히 찾아 보려합니다.
: :
: : 만약 없다면, 찾아 볼 필요도 없겠지요.
: :
: : 부탁드립니다.
|