久世です。
画像関係は、特に疎いため教えてください。
GraphicEX というライブラリを使用しています。
usesに、GraphicEXを追加し、
var
Graphic: TGraphic;
省略
Graphic.LoadFrom(ファイル名);
Image1.Picture.Graphic := Graphic;
とすると、画像全体が表示できるのですが、
画像の一部分のみを切り取って貼り付けたいと思っています。
そこで、Canvas.CopyRect を使用しようと思ったのですが、
Canvas.CopyRect(TRect, TCavas, TRect);
という型なので、TGraphicの内容を一旦テンポラリーのTCamvasに
ロードする必要があり、非効率です。
TGraphic型の一部を取り出し、TGraphic型を生成するなど、良い方法を
ご伝授ください。
以上よろしくお願いします。
〔● 久世雄一 ●〕
〔● E-Mail: ku...@hi-ho.ne.jp ●〕
TGraphic 型ではなく TPicture型です
TGraphic型では おそらくロードした時点で Abstractエラーが出るかと思いますが?
procedure TForm1.Button1Click(Sender: TObject);
var
Picture : TPicture;
Bitmap : TBitmap;
begin
Bitmap := TBitmap.Create;
Picture := TPicture.Create;
if OpenDialog1.Execute = True then
begin
Picture.LoadFromFile(OpenDialog1.FileName);
Bitmap.Assign(Picture.Graphic);
Image1.Canvas.CopyRect(Rect(0,0,80,80),Bitmap.Canvas,Rect(20,20,100,100));
end;
Picture.Free;
Bitmap.Free;
end;
> という型なので、TGraphicの内容を一旦テンポラリーのTCamvasに
> ロードする必要があり、非効率です。
上記のプログラムでは Bitmap にコピーしていますが、これは回避する事が出来ないと思います。
-----------------------------
http://khe00221.image.coocan.jp/
-----------------------------
----- Original Message -----
From: "久世雄一" <ku...@hi-ho.ne.jp>
To: <Del...@ml.users.gr.jp>
Sent: Friday, March 16, 2007 12:18 AM
Subject: [Delphi:89409] TGraphicからの部分コピー
>
> いつもお世話になっております。
>
> 久世です。
>
> 画像関係は、特に疎いため教えてください。
> GraphicEX というライブラリを使用しています。
>
> usesに、GraphicEXを追加し、
>
> var
> Graphic: TGraphic;
>
> 省略
> Graphic.LoadFrom(ファイル名);
> Image1.Picture.Graphic := Graphic;
>
> とすると、画像全体が表示できるのですが、
> 画像の一部分のみを切り取って貼り付けたいと思っています。
>
> そこで、Canvas.CopyRect を使用しようと思ったのですが、
> Canvas.CopyRect(TRect, TCavas, TRect);
>
Delphi7 + InterBase6 + InterBase Expressを使用しています。
DBLookupComboBox のテキストエリアに、文字が入らず悩んでいます。
・マウスクリックしても文字は入りません。
・DBLookupComboBox1.Text := 'test'; とすると、
『[エラー] : 読み込み専用プロパティに書き込むことはできません』
が出ます。
HELPには、次のように書かれています。
『Text プロパティ (TDBLookupComboBox)
Text プロパティを調べると,選択されている参照値を特定できます。
Text は参照コンボボックスの編集領域で表示される値です。
ReadOnly が false で,データセットが編集モードにあれば,
ユーザーは新しい値を入力して Text の値を変更できます。』
「データセットを編集モードに」する意味がわかりません。
なお、データモジュールには、
・TIBDataset
・TIBDatabase
・TDataSource
他を貼り付けています。
よろしくお願いします。
DBLookupComboBoxのTextプロパティは読込専用ですので、左辺値(式の左側のこ
と)には出来ませんよ。
DBLookupComboBoxは、例えば、受注データに商品番号を入力するとき、商品番号
を直接入力させる代わりに、商品マスターの商品名をリストアップして選択させ
る、なんて用途に使うものです。
テキストエリアに自由な文字列を入力したいのならば、DBComboBoxをお使いになっ
てください。
--
SAIMI Kohei <qs2...@aim.com>
久世です。
アドバイスありがとうございます。
GraphicExについて説明が不足していました。
すみません。
http://www.lischke-online.de/GraphicEx.php
以下のように使用することができます。
var
GraphicClass: TGraphicExGraphicClass;
Graphic: TGraphic;
begin
// GraphicFromContent always returns TGraphicExGraphicClass
Graphic := GraphicClass.Create;
Graphic.OnProgress := ImageLoadProgress;
Graphic.LoadFromFile(FileName);
Image1.Picture.Graphic := Graphic;
end;
On Fri, 16 Mar 2007 02:09:53 +0900
khe00221 <khe0...@vesta.dti.ne.jp> wrote:
> TGraphic 型ではなく TPicture型です
GraphicExの場合、TGraphic型を継承した、TGraphicExGraphicClass型を
使用しているみたいです。
ですので、Graphic.LoadFromFile(FileName)とした場合、
実体は、GraphicClass.LoadFromFile(FileName)が呼ばれていますので
Abstractエラーは発生しません。
> Picture.LoadFromFile(OpenDialog1.FileName);
> Bitmap.Assign(Picture.Graphic);
> Image1.Canvas.CopyRect(Rect(0,0,80,80),Bitmap.Canvas,Rect(20,20,100,100));
カット
> 上記のプログラムでは Bitmap にコピーしていますが、これは回避する事が出来ないと思います。
ということは、本サンプルを参考にすると、
Graphic := GraphicClass.Create;
Graphic.LoadFromFile(FileName);
Bitmap.Assign(Graphic); ・・・・①
Image1.Canvas.CopyRect(Rect(0,0,80,80),Bitmap.Canvas,Rect(20,20,100,100));
とこんな感じでしょうか。
①の部分でエラーが出そうな気がするので、他の方法も含め一旦Bitmapに
変換する方法がないか模索してみます。
では。
〔● 久世雄一 ●〕
〔● E-Mail: ku...@hi-ho.ne.jp ●〕
読込専用でしたか。
HELPの
「Text は...ReadOnly が false で,データセットが
編集モードにあれば,ユーザーは新しい値を入力して
Text の値を変更できます。』
とあり、変更できると思ってしまいました。
参考書も入手できず手探りで進めています。
ご返事ありがとうございました。
On Fri, 16 Mar 2007 18:06:33 +0900
"tonbo_ik" <tonb...@ybb.ne.jp> wrote:
> 「データセットを編集モードに」する意味がわかりません。
変更前に、データセットのEditメソッドを呼び出します。
ただし、常に成功するわけではありません(CanModify プロパティ)。
-------------------
黒柳 裕明
j...@edit.ne.jp
次のような文をFormcreateに置き、IBDataSet1や
DataSource1のいくつかプロパティを変えてみたのですが
CanModify プロパティがFalseのままで、Editメソッドが
実行できませんでした。
if IBDataSet1.CanModify = True then
begin
IBDataSet1.Edit;
end;
闇雲ではだめですね・・・