::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-05 21:23:53, Hit : 4455, Vote : 1261
 Bitmap을 Icon으로 바꾸려면...

// 작성자: 하영재 (soohyun@nilex.co.kr)

// 먼저 두개의 Bitmap을 생성해야 하는데... Mask Bitmap(AND Bitmap이라 부른다.)과
// Image Bitmap(XOR Bitmap이라 부른다.) 이렇게 두개의 Bitmap을 생성한 후...
// Windows API 함수인 CreateIconIndirect()를 사용하여 바꿀 수 있다.
//
// 예)

procedure TForm1.Button1Click(Sender: TObject);
var
IconSizeX : integer;
IconSizeY : integer;
AndMask : TBitmap;
XOrMask : TBitmap;
IconInfo : TIconInfo;
Icon : TIcon;
begin
IconSizeX := GetSystemMetrics(SM_CXICON);
IconSizeY := GetSystemMetrics(SM_CYICON);

AndMask := TBitmap.Create;
AndMask.Monochrome := true;
AndMask.Width := IconSizeX;
AndMask.Height := IconSizeY;

AndMask.Canvas.Brush.Color := clWhite;
AndMask.Canvas.FillRect(Rect(0, 0, IconSizeX, IconSizeY));
AndMask.Canvas.Brush.Color := clBlack;
AndMask.Canvas.Ellipse(4, 4, IconSizeX - 4, IconSizeY - 4);

Form1.Canvas.Draw(IconSizeX * 2, IconSizeY, AndMask);

XOrMask := TBitmap.Create;
XOrMask.Width := IconSizeX;
XOrMask.Height := IconSizeY;

XOrMask.Canvas.Brush.Color := ClBlack;
XOrMask.Canvas.FillRect(Rect(0, 0, IconSizeX, IconSizeY));
XOrMask.Canvas.Pen.Color := clRed;
XOrMask.Canvas.Brush.Color := clRed;
XOrMask.Canvas.Ellipse(4, 4, IconSizeX - 4, IconSizeY - 4);

Form1.Canvas.Draw(IconSizeX * 4, IconSizeY, XOrMask);

Icon := TIcon.Create;
IconInfo.fIcon := true;
IconInfo.xHotspot := 0;
IconInfo.yHotspot := 0;
IconInfo.hbmMask := AndMask.Handle;
IconInfo.hbmColor := XOrMask.Handle;
Icon.Handle := CreateIconIndirect(IconInfo);

AndMask.Free;
XOrMask.Free;

Form1.Canvas.Draw(IconSizeX * 6, IconSizeY, Icon);

Application.Icon := Icon;

InvalidateRect(Application.Handle, nil, true);
Icon.Free;
end;





491   [네트웍/인터넷] 네트워크 컴퓨터가 존재하는지 검사하기  김영대 2003/03/07 4903 1261
490   [일반/컴포넌트] 파일의 변경/생성/사용한 날짜 바꾸기  김영대 2003/03/07 4961 1261
489   [일반/컴포넌트] OEM conversion  김영대 2003/03/06 4266 1261
  [윈도우즈 API] Bitmap을 Icon으로 바꾸려면...  김영대 2003/03/05 4455 1261
487   [일반/컴포넌트] PageControl 에서 미리 이동하려는 Sheet 알아내어 제어하기  김영대 2004/09/13 4951 1260
486   [윈도우즈 API] "시작"->"프로그램" 메뉴에 폴더 추가하기  김영대 2003/03/29 4882 1260
485   [시스템] IP Address 윈도우 폼위에 만들어보기  구창민 2003/03/14 5407 1260
484   [시스템] Windows 9x/ME/NT/2000/XP 버전 구별  김영대 2003/03/07 4659 1260
483   [윈도우즈 API] 화면의 Memo 가 보여줄 수 있는 라인수 알아내기  김영대 2003/03/05 4970 1259
482   [일반/컴포넌트] TStringGrid 의 모든 행에 행선택 CheckBox 두기  김영대 2004/09/06 5650 1258
481   [일반/컴포넌트] StrToFloatDef  김영대 2003/11/13 4932 1258
480   [일반/컴포넌트] Zlib 를 이용한 압축과 해제  김영대 2004/08/03 5413 1257
479   [윈도우즈 API] 바탕화면, 시작메뉴 icon 숨기기  김영대 2003/03/07 5146 1257
478   [윈도우즈 API] Windows Logon 사용자명, 컴퓨터명  김영대 2003/03/05 4665 1257
477   [시스템] 파일 복사하면서 진행상태와 남은 시간 표시하기  김영대 2003/04/10 6075 1255
476   [일반/컴포넌트] JPEG, Bitmap 상호 변환하여 파일로 저장하기  김영대 2003/03/07 4342 1255
475   [윈도우즈 API] 프로그램으로 Screensaver 등록하는 두가지 방법  김영대 2003/03/06 4404 1255
474   [일반/컴포넌트] StringGrid에서 Enter Key를 Tab Key와 같은 효과  김영대 2003/03/04 5477 1255
473   [윈도우즈 API] "임시 인터넷 파일" 전부 지우기  김영대 2003/03/26 5227 1254
472   [윈도우즈 API] 파일에서 아이콘 빼내기(16 * 16)  김영대 2003/03/07 4687 1254
471   [시스템] 윈도우즈 네트워크에 접속했는지 검사  김영대 2003/03/04 4664 1254
470   [시스템] ROM-BIOS 정보 읽기  김영대 2003/03/07 5296 1253
469   [일반/컴포넌트] 메뉴 아이템의 동적 추가와 그림넣기  김영대 2003/03/04 7847 1253
468   [윈도우즈 API] '알려진 파일 형식의 파일 확장명 숨김' 여부  김영대 2004/08/25 4967 1251
467   [일반/컴포넌트] Delphi의 Tokenizer TParser 사용 예제  김영대 2003/03/31 4791 1251
466   [데이터베이스] DB에 저장된 JPEG(JPG)를 DBGrid에 출력하기  김영대 2003/03/06 5189 1251
465   [시스템] 마우스 포인터 속도 바꾸기  김영대 2003/03/06 4937 1251
464   [윈도우즈 API] 폼이 최대화될때 특정루틴 실행하기  김영대 2003/03/05 4406 1251
463   [일반/컴포넌트] VB Left$(), Right$(), LTrim$() ...  김영대 2003/03/04 4987 1251
462   [일반/컴포넌트] 전각문자인지 반각문자인지 검사하기  김영대 2003/03/07 6678 1250
461   [시스템] 외부 프로그램 종료 시키기  김영대 2004/08/02 6456 1249
460   [일반/컴포넌트] 문자열 찾아서(Search) 바꾸기(Replace)  김영대 2003/03/04 4166 1249
459   [일반/컴포넌트] Memo의 입력 행수/열수 제한하기  김영대 2003/03/07 3778 1248
458   [네트웍/인터넷] 모든 TCP/IP interfaces 의 IP/Netmask 구하기  김영대 2003/03/07 5563 1247
457   [일반/컴포넌트] 투명한(Transparent) TPanel 콤포넌트  김영대 2003/03/07 5139 1247
456   [일반/컴포넌트] RichEdit에서 HTML 태그를 다른색으로 표시하기  김영대 2003/03/07 5556 1247
455   [윈도우즈 API] 윈도우즈 "시작" 메뉴를 내 프로그램 안으로...  김영대 2003/03/07 4570 1247
454   [윈도우즈 API] Control의 repainting 금지하여 깜박임 줄이기  김영대 2003/03/07 5459 1247
453   [윈도우즈 API] 시스템 메뉴에서 menu item 제거하기  김영대 2003/03/05 4627 1246
452   [윈도우즈 API] 윈도우즈 전화걸기 화면 띄우기  김영대 2003/03/07 4618 1245

[이전 10개] [1]..[11][12] 13 [14][15][16][17][18][19][20]..[25] [다음 10개]
 

Copyright 1999-2021 Zeroboard / skin by zero