Q&A

  • Form Color 표현방법
윈도우의 타이틀바를 보면 Color 가 진하다가 옅어지는 효과
(포토샵에서 그레디언트)가 있는데..
델파이의 Form Color 도 이러한 효과를 줄수 있는지 궁금합니다..
혹시 아시는 분은 연락주세요...
3  COMMENTS
  • Profile
    공성환 2002.02.15 19:58
    예전에 김영대씨가 했던 방법일겁니다...

    procedure TForm1.FormPaint(Sender: TObject);
    var
      Row, Ht: Word ;
    begin
      Ht := (ClientHeight + 255) div 256 ;
      for Row := 0 to 255 do
        with Canvas do
        begin
          Brush.Color := RGB(0, 0, Row) ;
          FillRect(Rect(0, Row * Ht, ClientWidth, (Row + 1) * Ht)) ;
        end
    end;

  • Profile
    LuckyBoy 2002.02.15 23:05

    안녕하세요..
    박 철호 입니다..
    답변 내용 감사합니다..
    알려 주신 방법대로 해보니까.. 아주 잘되는데요..

    죄송하지만 또 한가지 질문이 있는데요..
    혹시 Form 안에 있는 모든 Component 도 이렇게 표현할 수 있는 방법을
    혹시 알고 계신가요??
    그러니까.. Panel 이 Form 에 있을경우 Form은 이러한 방법으로 되는데..
    Panel은 표현을 못하거든요...

    그럼 즐프하세요..
  • Profile
    공성환 2002.02.16 00:38
    Panel까지할려고요...
    잘은 모르지만 이렇게 하니깐 되는것 같기도 하네요...

    Panel위에 Image를 하나올려놓고요...
    그냥 images는 프로퍼티에서 Align에서 alClient로만 하고요...
    Panel이벤트 OnResize에서 이렇게 하니깐 되네요...

    procedure TForm1.Panel1Resize(Sender: TObject);
    var
      Row, Ht: Word ;
    begin
      Ht := (Panel1.ClientHeight + 255) div 256 ;

      for Row := 0 to 255 do
        with Image1.Canvas do
        begin
          Brush.Color := RGB(0, 0, Row) ;
          FillRect(Rect(0, Row * Ht, Panel1.ClientWidth, (Row + 1) * Ht)) ;
        end
    end;

    이거는 그냥 무식한 저의생각입니다...

    아니면 콤퍼넌트를 만들어서 사용하시면 될것같기도 하고... 인터넷에서
    찾아보세요... 저도 panel까지 그렇게 해본경험이 없어서...



    procedure TForm1.Panel1Resize(Sender: TObject);
    var
      Row, Ht: Word ;
    begin
      Ht := (Panel1.ClientHeight + 255) div 256 ;

      for Row := 0 to 255 do
        with Image1.Canvas do
        begin
          Brush.Color := RGB(0, 0, Row) ;
          FillRect(Rect(0, Row * Ht, Panel1.ClientWidth, (Row + 1) * Ht)) ;
        end
    end;