와우 마룬거이님 감사합니다~
맥오에스텐은 코코아가 기본 위젯입니다.
카본은 과거 클래식을 호환하기 위해 만들어진 GUI 이고요.
과거 라자루스가 카본기반으로 개발된 흔적인가요?
카본은 현재 안쓰이고 있는거로 아는데 ..
여하튼 감사!! 해결책이 보이네요 ~
저도 오픈소스 프로젝트에 참여해야 하나요~
MarunGuy 님이 쓰신 글 :
: LCL 소스를 보니 맥에서 cocoa 위젯을 사용한다면 구현이 안 되어 있는 것 같네요.
:
: Pixels 프로퍼티가 SetPixel, GetPixel 메쏘드로 맵핑됩니다.
: 소스를 쭈욱 따라가다보면 DCSetPixel, DCGetPixel 인터페이스를 사용하게 되어 있습니다.
:
: DCSetPixel, DCGetPixel 는 widget 별로 구현됩니다. win32, gtk, qt, cocoa, carbon...
: 소스는 보통 설치폴더\lcl\interfaces 폴더 밑에 widget 별로 존재합니다.
:
: 어쨌든, win32, gtk, qt 등은 DCSetPixel, DCGetPixel 인터페이스가 구현되어 있는데
: 아래처럼 cocoa 는 구현이 안 된 상태로 비어 있네요.
:
procedure TCocoaWidgetSet.DCSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor);
: begin
:
: end;
:
: 아, carbon 쪽은 구현이 되어있네요.
:
procedure TCarbonWidgetSet.DCSetPixel(CanvasHandle: HDC; X, Y: integer;
: AColor: TGraphicsColor);
: begin
: {$IFDEF VerboseObject}
: DebugLn('TCarbonWidgetSet.DCSetPixel DC: ' + DbgS(CanvasHandle) + ' X: ' + DbgS(X) + ' Y: ' + DbgS(Y) + 'Color: ' + DbgS(AColor));
: {$ENDIF}
:
: if not CheckDC(CanvasHandle, 'DCSetPixel') then Exit;
:
: TCarbonDeviceContext(CanvasHandle).SetPixel(X, Y, AColor);
: end;
:
: 맥 사용자도 아니고 써 본적도 없어서 cocoa 기본 widget 인지, carbon 이 기본 widget 인지 모르겠네요.
:
: LCLWidgetType 을 옵션에서 지정하면 Widget 을 바꿀 수 있는 것 같습니다.
: 아래 링크를 참조해보세요.
:
http://wiki.lazarus.freepascal.org/IDE_Window:_Compiler_Options
:
: 제갈볼 님이 쓰신 글 :
: : H-S Kim 님이 쓰신 글 :
: : : Win 7 x64
: : : Lazarus 1.1
: : : FPC 2.7.1에서는 되네요...
: : : 무슨 차이가 있는지는 모르겠지만요...
: : :
: : : 속도는 많이 느려서 사용하기는 좀 그렇네요
: : :
: : : 사족으로,
: : : i:=1, j:=1 을 i:0, j:=0 으로 해야 다 복사가되는군요
: : :
: : :
: : : procedure TForm1.Button1Click(Sender: TObject);
: : : var
: : : i, j: integer;
: : : begin
: : :
: : : for i:=0 to image1.Width-1 do begin
: : : for j:=0 to image1.Height-1 do begin
: : : image2.Canvas.Pixels[i, j]:= image1.Canvas.Pixels[i, j];
: : : end;
: : : end;
: : :
: : : showMessage('Good~ !');
: : :
: : : // image2.Refresh;
: : : end;
: : :
: :
: : 네 그건 알고 있습니다.
: :
: : Pixels[]; 메써드는 속도는 느리지만 Scanline을 쓰지 않고 프로토타입으로 영상처리 알고리즘을 테스트할땐
: : 아주 요긴합니다.
: :
: : 윈도에선 되는군요, 맥에선 왜 안되는 걸까효??