본문 바로가기
Delphi Tip/출력

델파이 인쇄 출력 6편

by MonoSoft 2023. 9. 4.
728x90
반응형

델파이 인쇄 출력

728x90

음영 처리 기법

 

음영 처리 기법은 크게 두 가지가 있습니다.

 

1. RGB 색상을 이용한 음영

2. 브러시 패턴을 이용한 음영

표준 브러시 패턴을 이용한 방법

비트맵 브러시를 이용한 방법

 

 

 

첫번째,

RGB 색상을 이용한 음영은 브러시 스타일을 bsSolid로 주고

브러시색을 적절히 조절해서 그냥 네모를 그리는것입니다.

상당히 간편하고도 편리하면서 깔끔하기때문에 가장 널리 사용합니다.

윈도용 아래아 한글에서 사용하기도합니다.

 

두번째,

브러시 패턴을 이용한 음영은 두가지가 있습니다.

그냥 표준 브러시패턴을 이용하는 방법과 비트맵 브러시를 이용하는 방법이 있는데

표준 브러시는 모양이 이쁘지 않기 때문에 거의 활용도가 떨어지고

대부분 비트맵브러시를 이용해서 처리합니다.

MS워드에서 이 방법을 사용합니다.

 

 

1. RGB 색상을 이용한 음영 

 

이 방법은 그냥 네모를 그린다고 생각하면 됩니다.

 

다만 네모 안에 색을 적절히 조절만 하면 됩니다.

 

//RGB를 이용한 음영

procedure TMain_Form.Button7Click(Sender: TObject);

var

  i: Integer;

begin

  Printer.BeginDoc;

  SetMapMode( Printer.Handle, MM_LOMETRIC );

 

  with Printer.Canvas do

  begin

    for i:= 0 to 255 do

    begin

      Pen.Color:= RGB( i, i, i );

      Brush.Color:= Pen.Color;

      Brush.Style:= bsSolid;

      Rectangle( 0, -( i * 10 ), 500, -( ( i+1 ) * 10 ) );

      Brush.Style:= bsClear;

      if i mod 10 = 0 then

      TextOut( 550, -( i * 10 ), Format( 'RGB( %d, %d, %d );', [i,i,i] ) );

    end;

  end;

  Printer.EndDoc;

end;

 

 

 

2. 비트맵 브러시를 이용한 음영

비트맵 브러시는 음영 말고도 여러가지에 활용됩니다.

데스크탑의 무늬라던가 폼을 마우스로 이동할때 나타나는

선을 그린다거나 윈도 종료시 화면이 어두어지게 한다거나

팝업 도움말이 나타날때 그림자 효과를 준다거나

델파이에서도 오브젝트인스펙터에서 그리드의 가로선(점선)을

비트맵 브러시패턴을 이용해서 그리고 있습니다.

 

비트맵 브러시에서 사용하는 비트맵은

가로,세로의 크기가 8 X 8 이어야 합니다.

 

아마도 속도를 빠르게 처리하기 위해서 고정시킨것 같습니다.

 

아래의 예제에서 Image_Brush1, Image_Brush2, Image_Brush3, Image_Brush4에

필요한 그림의 크기를 모두 8 X 8로 하고 바탕색을 흰색으로하고

검정색으로 점을 몇개씩 (예를들어 흰색 3개에 검정색 1개) 찍되

네개를 모두 틀리게 그리십시오.

 

//비트맵 브러시를 이용한 음영

procedure TMain_Form.Button9Click(Sender: TObject);

var

  i: Integer;

begin

  Printer.BeginDoc;

 

  SetMapMode( Printer.Handle, MM_LOMETRIC );

 

  with Printer.Canvas do

  begin

    Brush.Bitmap := Image_Brush1.Picture.Bitmap;

    Rectangle( 1700, 0, 2000, -400 );

    Brush.Bitmap := Image_Brush2.Picture.Bitmap;

    Rectangle( 1700, -400, 2000, -800 );

    Brush.Bitmap := Image_Brush3.Picture.Bitmap;

    Rectangle( 1700, -800, 2000, -1200 );

    Brush.Bitmap := Image_Brush4.Picture.Bitmap;

    Rectangle( 1700, -1200, 2000, -1600 );

  end;

 

  Printer.EndDoc;

end;

 

728x90
반응형

'Delphi Tip > 출력' 카테고리의 다른 글

델파이 인쇄 출력 9편  (0) 2023.09.06
델파이 인쇄 출력 8편  (0) 2023.09.05
델파이 인쇄 출력 5편  (0) 2023.09.01
델파이 인쇄 출력 4편  (0) 2023.08.30
델파이 인쇄 출력 3편  (0) 2023.08.29

댓글