フリーソフト

画像関連

[BCB/Delphi] 再描画に関するメソッド

再描画に関連するメソッド

・Invalidate
  再描画が必要であることを宣言します。実際の再描画は適当なタイミングで実施されます。

・Update
  Invalidateなどで保留中の再描画を強制的に実施します。

・Repaint
  Invalidateを呼び出した後、Updateを呼び出します。強制的に再描画します。

・Refresh
  Repaintと同じです。

[BCB] TColorからR,G,B値への変換

赤(R)、緑(G)、青(B)を取得するには、それぞれGetRValue、GetGValue、GetBValueを使う。

(例)
byte R=GetRValue(clBlue);

[BCB,Delphi] RGBとHLSの変換

#include <GraphUtil.hpp>

void __fastcall ColorRGBToHLS(unsigned clrRGB, Word &Hue, Word &Luminance, Word &Saturation);

unsigned __fastcall ColorHLSToRGB(Word Hue, Word Luminance, Word Saturation);

[Delphi,BCB] アイコンリソースを追加したらアプリのアイコンが変わった!

rcファイルを使ってアイコンリソースをEXEファイルに埋め込んだときに、アプリケーションのメインアイコンが変わってしまうことがあります。これは、Delphi,BCBはリソース名でリソースを並び替えてしまうためにおきる問題です。

解決策としては、Delphi,BCBではメインアイコンをMAINICONの名前で保持していますので、ソートした時に、これよりも後に来るような名前を付けます。例えば、

OREICON  ICON  "aaa.ico"

のような感じです。MよりもOの方がアルファベット順が後になります。

[Delphi] 画面をキャプチャする

procedure TScreenSaverForm.FormCreate(Sender: TObject);
var
  dc:hdc;
begin
  //キャプチャ
  Image1.Picture.Bitmap.width:=screen.Width;
  Image1.Picture.Bitmap.height:=screen.Height;

  dc:=GetDC(0);
  BitBlt(Image1.Picture.Bitmap.Canvas.Handle,0,0,
           Image1.Picture.Bitmap.Width,Image1.Picture.Bitmap.Height,
           dc,0,0,SRCCOPY);
  ReleaseDC(0,dc);
end;

[Delphi] ImageListからIcon形式で取り出す

var
  TempIcon:TIcon;
begin
  TempIcon:=TIcon.Create;
  ImageList1.GetIcon(2,TempIcon);//インデクスが2の画像を取り出す

  //TempIconにアイコンが格納されている
  //何か処理をする

  //使い終わったらフリー
  TempIcon.Free;
end;

[BCB] システムのアイコンを取得する

LoadIconを使用すると、システムで使用されるアイコン(MessageDialogなどに表示されるエラーや警告のアイコンなど)を取得できます。

void __fastcall TForm1::FormCreate(TObject *Sender)
{
 //Image1にエラーのアイコンを表示
 Image1->Picture->Icon->Handle = LoadIcon(0, IDI_HAND);
}

他にも以下のような値を指定できます。

IDI_APPLICATION
IDI_HAND
IDI_QUESTION
IDI_EXCLAMATION
IDI_ASTERISK
IDI_WINLOGO

[BCB] 画像を開くダイアログのFilterとDefaultExt

GraphicFilter、GraphicExtensionを使うと画像ファイルに対応したフィルタ文字列、拡張子が取得できます。

OpenDialog1->DefaultExt = GraphicExtension(__classid(Graphics::TBitmap));
OpenDialog1->Filter = GraphicFilter(__classid(Graphics::TBitmap));

TBitmap以外に、Ticon、TMetafile、TGraphicが指定できます。

[BCB] アイコンファイルを開く

TIcon *Icon;

Icon=new TIcon;
Icon->LoadFromFile(LoadFilename);
Bmp->Width=Icon->Width;
Bmp->Height=Icon->Height;
Bmp->Canvas->Draw(0,0,Icon);
delete Icon;

[Delphi] JpegとBmpの変換

use節にJpegを追加

uses Jpeg;

//BmpからJpeg
procedure TForm1.Button1Click(Sender: TObject);
Var
Jpg : TJpegImage;
Bmp : TBitMap ;
begin
 Jpg :=TJpegImage.Create;
 Bmp :=TBitmap.Create;

 Bmp.LoadFromFile('C:\From.bmp');
 Jpg.Assign(BMP);
 Jpg.SaveToFile('C:\To.jpg' );

 Bmp.Free ;
 Jpg.Free;
end;

//JpegからBmp
procedure TForm1.Button1Click(Sender: TObject);
var
 Jpg : TJpegImage; 
 Bmp : TBitmap;
begin
 Jpg :=TJpegImage.Create ;
 Bmp :=TBitmap.Create;

 Jpg.LoadFromFile('From.jpg');
 Bmp.Assign(JPG);
 Bmp.SaveToFile('To.bmp')

 Jpg.Free;
 Bmp.Free ;
end;