Demoってなんか新種の生き物みたいだな
どうも。ありがとうございました。
おかげさまでTagプロパティを用いて太さ設定、消しゴム大きさ設定とかもできました。
ところで……
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); //ボタンを押したとき
begin
Image1.Canvas.MoveTo(X,Y); //ボタン押下位置取得
pen := True; //変数penをtrueに
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
//マウス移動時に
begin
if pen then //変数penがtrue(=ボタン押下時)のとき
Image1.Canvas.LineTo(X,Y); //線を引く
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); //ボタンを離したとき
begin
pen := False; //変数penをfalseに
end;
このように描画しているのですが、クリックして(ドラッグせずに)離すと点が打てないという問題に直面しております。
クリックした地点に点を打つ、という処理はLineToでは無理なのでしょうか?
>>924 普通のお絵かきソフトの場合、
先を引くという機能を選択する→クリックしたままドラッグさせると
点線が表示される。クリックを止めると点線が線になって確定させる。
ということになるので、普通は点を打つか、線を引くかユーザに
選択させるもんだと思うぞ。
>>925 いや、"直線ツール"の話ではなく、ペイントソフトの言い方をすれば、"鉛筆ツール"のつもりです。
直線ツールはまた追々付けていってみようかなと……
>>926 ぢゃあ、クリック時のTPointとクリックを止めた時のTPointが同じだったら、
その場所に点を打つという処理にすれば?
つーか、LineToは最後の点を描かない仕様だったと思うので
LineToを使ったあと、X,Yに点を描けばええと思います。
色々試行錯誤してみた結果、Canvas.Pixelを使えば良いという事になりました
自分の頭の中にはLineToしか思い浮かばなかったです。
名無しに戻って頑張ってみます。アドバイスありがとうございました
htmlを1タグずつ解釈していって目当ての情報を得る関数を作ったのですが
一般的にこういった関数の関数名はどういう名前が付くのでしょうか?
今は
function KaisekiTextMode(html : String ):Boolean;
という名前をつけていますが、「Kaiseki」の部分にものすごく違和感があります。
多少スレ違いな感がありますが、他に適切なスレも見つからずに困っています。
> Canvas.Pixelを使えば良いという事になりました
えっ、これ知らなかったの? お絵かきプログラムつくるんだったら、TCanvas の
メソッドをすべて試すことくらいしておけよな
およ、Pixels[] はプロパティーだな
飛行機のJPGを左から右へ移動させ、あたかもとんでいるように
見せるにはどうすればよいでしょうか。
>>933 そのJPGを見ている奴の顔を右から左へ動かす。
>>933 そんなに頻繁にアニメーション使わないならImageListを使うと楽
>>934 見せたい相手が近くにいない場合を想定しているので、
ちょっと難しいです。できればプログラムでできたらうれしいです。
>>935 ありがとうございます。調べてみます。
>>936 ありがとうございます。試してみます。
>>938 ImageListに画像読み込んでImageList.Draw(0, 0, 0);ってすると
勝手にマスク処理(描画する画像と背景画像を合わせる)してくれるよ
これからもよく使うようなら自分でandだのxorだのしたほうがいいけど
DirectX使え
プログラムを打ち込んで実行したら、Runtime error 6とか出て、全く次に進めません
教えてください、お願いします _no
ちなみに、コンソールアプリケーションでやっています
ソースはこんな感じです
program ps1(input,output);
var m,n:rear;
begin
readln(m);
n:=m+1
writeln(n);
end.
超初心者でゴメンナサイ _no
ちなみにDelphi6 Personalを使用しています
program OneCoolDelphiProgram1;
{$APPTYPE CONSOLE} //This tells the compiler that the program is a console type
uses
SysUtils;
begin
//Insert super cool Delphi Code here
end.
program ps1(input,output);
これはおかしい。こんな感じ。
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
var m,n:real;
begin
readln(m);
n:=m+1;
writeln(n);
end.
>program ps1(input,output);
無茶苦茶クラシックなPascalだな。
とりあえずここだけ
>program ps1;
に変えとけばいいよ。
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
var m,n:real;
begin
readln(m);
n:=m+1;
writeln(n);
readln;// これ付けるとみやすいかも
end.
すみません、学校でLinuxでPascalやってるのを家に持って帰ってやり始めたんです
いまからまたやってみます、ありがとうございます
[新規作成] から [コンソールアプリケーション] を選ぶといいよ
949 :
デフォルトの名無しさん:04/05/21 23:34
文章ファイルをMEMOやRichEditに読み込まずに行数と文字数を
知る方法はなにかないでしょうか?
>>949 TStringListに読み込んだらどうよ?
もしくはStreamに落として改行コードの数を数えるとか
Delphiしたいんですけど
やっぱり英語読めないとだめですよね。
たとえば
>>946の英語って読めますか?
>>953 読めね
でもDelphi起動
そしてあなたも今日からDelphi起動
>>953 英語が読めなくてもプログラミングはできる。
英語ができないと困るのは日本語訳されてない資料を読むときぐらい。
>>950-951 100Mのファイルを全部一度に読み込むのはメモリの無駄だろ。
AssignFile, Reset, Eof, Readln使っとけ。
TFileStreamを使え。
>>957 100Mってどこに出てきた? 何メガならメモリの無駄じゃないの?
実行スピードはどうなの?
960 :
デフォルトの名無しさん:04/05/22 02:13
最近テキスト処理にstream使うアホが増えてるのは
環境ホルモンの影響なんだろうか??
テキスト処理に TStream 系を使うことが何でアホなのか、アホに説明できるわけない
if str = 'いち' then result := 1 else
if str = 'にい' then result := 2 else
if str = 'さん' then result := 3 else
・・(略)
if str = 'じゅう' then result := 10;
をもっとうまく書く方法ってありますか?
テキストから
1文字をだして
数値にかえるにはどうしたらいいでしょうか?
n:=Ord(Copy(FileList[0],1,1));
「互換性のない型です」とエラーがでるのですが・・・
>>963 面倒だから「さん」まで
function HiraToNum(s:string):integer;
const
numstr : array[0..2] of string = ('いち','にい','さん');
var
i:integer;
begin
i := -1;
repeat
inc(i)
until (i>High(numstr)) or (numstr[i] = s);
if (i>High(numstr)) then result := -1 else result := i+1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := IntToStr(HiraToNum('にい'));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := IntToStr(HiraToNum('にい'));
end;
Ord(s[i])
Copy() の返値はstring型だから Ord は取れない
文字列は文字の配列だよ
s := '123';
なら s[2] は '2' の Char 型と互換
ええー、文字コードじゃなくて StrToInt() かよ。 Ord() だからてっきり・・・・・
こんなのはどうかな。
function HiraToNum(const Hira: string): Integer;
var
HiraStrings: TStringList;
begin
HiraStrings := TStringList.Create;
try
HiraStrings.Text := 'いち'#13#10'にい'#13#10'さん';
Result := HiraStrings.IndexOf(Hira);
if Result >= 0 then Inc(Result);
finally
HiraStrings.Free;
end;
end;