以前「画像に枠(https://www.petitmonte.com/bbs/answers?question_id=3381)」というタイトルで質問したポンポコビートです
junkiさんに紹介して頂いたblog(http://blog.livedoor.jp/junki560/archives/20057485.html)を実際に試してみたのですが、うまくできません
http://snow.freespace.jp/bluvenz/file/orz.jpg
↑のようになてしまいます
コンポーネント名の置き換え以外にどのように書き換えたかというと、
TForm1.btnDrawClickif not Assigned(src) then exit;
を削除し、既に読み込んだファイルに枠を付けるという意味で、srcをImage1.Picture.Bitmapに置き換え、
FColorをRGBで直接ソースに記述しました
ちなみに、読み込み済みのファイルはビットマップです
FormCreateのImage1.AutoSize := true;の部分は記述していません
また、
TForm1.btnPasteClick、btnSelectColorClick、FormDestroy、btnCopyClickは記述していません
いろいろ試してみましたが、解決の糸口が全く掴めないので質問させて頂きました
どうぞ宜しくお願い致します
もともとのBitmapが大きいからでしょ?
>もともとのBitmapが大きいからでしょ?
すいません
コレの意味がわからず・・・・
とりあえず、読み込む画像を小さくしてみたんですけど、やっぱり駄目でした><
他人のコードを試すときにはコツがあります。
1.まず、なにも変更しない。ファイル名とかは仕方ないけど。
2.1行変更するごとにコンパイル・実行を繰り返して変更が思った通りに
反映されているか確認する。
3.うまくいかなかった時は一つ前に戻って、どうするといいか考える
この繰り返しです。たくさん変更して一気に実行してうまくいかないといっても
なかなか原因をつかめないものです。
> FormCreateのImage1.AutoSize := true;の部分は記述していません
これはなぜですか?
かなり重要な設定だと思いますけど。予め読み込んだり、Assign() する画像の
サイズが分からないときにはとても役に立つ設定です。あと、やたらと TImage
のプロパティーを変更すると混乱します。互いに打ち消しあったりするプロパティー
もありますから。
AutoSizeプロパティをFalseにしている理由として、
画像読み込み時にフォームのサイズ(最大サイズも)とTImageのサイズを設定しているからです
>1.まず、なにも変更しない。ファイル名とかは仕方ないけど。
>2.1行変更するごとにコンパイル・実行を繰り返して変更が思った通りに反映されているか確認する。
>3.うまくいかなかった時は一つ前に戻って、どうするといいか考える
ごもっともです^^;
今から試してみます!
> 画像読み込み時にフォームのサイズ(最大サイズも)とTImageのサイズを設定しているからです
こういう場合のおきまりとして、フォームのサイズに依らず画像を全部みるために
TScrollBox のなかの (0,0) の位置に TImage を置いて AutoSize を true に
します。わたしもよくやります。
りおりおさん
アドバイスありがとうございます
長年Delphiをやっている方の貴重な意見、とてもためになります
身近に相談できる人もいないので、こういったアドバイスがきけて良かったです
これからもよろしくお願いします
ちなみに、少しずつ改造していったら、無事動かすことができました
本当にありがとうございます
ツイート | ![]() |