喫茶XRAYトップページ


[11701] G018_不定形な曲線の描画返信 削除
2018/1/29 (月) 16:06:14 taki
GDI+関係サンプル G018_不定形な曲線の描画
「02_DrawCurve または AddCurve で開いた曲線を描画」
について教えてください。

数点のグラブハンドル(コントロールポイント)で描画されたベジェ曲線?の
コントロールポイント以外の赤線の中間的な座標を得ることはできるでしょうか。

赤色のベジェ曲線は生成されたMyPanelのCanvasに描画されていると考え

procedure TForm1.Button1Click(Sender: TObject);
var
  xx,yy:integer;
begin
  for xx := 0 to 500 do begin
    for yy := 0 to 300 do begin
      if MyPanel.Canvas.Pixels[xx,yy] = clRed then begin
        MyPanel.Canvas.Pixels[xx,yy] := clGreen;
      end;
    end;
  end;
end;

を試してみました。

色が赤から緑に変わって、一応座標は取れそうなのですが、
しらみつぶし方式なので時間がかかります。

「GDI+ TGPGraphic.DrawPath 座標」等でググったのですが、
思ったような記事がみつかりません。

「こんな関数があるよ」・・・なら嬉しいのですが。

よろしくお願いします。


[11702] Re:G018_不定形な曲線の描画返信 削除
2018/1/29 (月) 17:19:21 Mr.XRAY
▼ takiさん
> GDI+関係サンプル G018_不定形な曲線の描画
> 「02_DrawCurve または AddCurve で開いた曲線を描画」


こう書いて頂けると助かります.どのサンプルをみればすぐ分かりますです.
リンクが貼ってあると更に便利かと (笑)

描画した線上の座標値を取得するという問題だと思いますが,
アルゴリズムといろいろとあると思います.

GDI+ を使用するのであればパスを使用するとちょっは便利かと,
例えば以下のように.

[G178] [05_マウスカーソル位置のパスを IsVisible 関数で検出]
http://mrxray.on.coocan.jp/Delphi/GDIPlusSamples/G178_GDIPlus_MoonShape.htm#05

また,OnMouseDonw, OnMouseMove 以外にも
CM_HITTEST メッセージも使用できると思います.
CM_HITTEST は以下の TWMNCHitTest と同じですが,発生のタイミングが少し違います.
CM_HITTEST の方がいいようてす.
このメンバにある XPos, YPos, Pos などが使えます.

 TWMNCHitTest = packed record
    Msg: Cardinal;
    Unused: Longint;
    case Integer of
      0: (
        XPos: Smallint;
        YPos: Smallint);
      1: (
        Pos: TSmallPoint;
        Result: Longint);
  end;


[11703] Re2:G018_不定形な曲線の描画返信 削除
2018/1/29 (月) 19:40:43 taki
▼ Mr.XRAYさん
 
> 描画した線上の座標値を取得するという問題だと思いますが,
> アルゴリズムといろいろとあると思います.


マスター ありがとうございます。

目的は、ベジェ曲線で描いた波形データで音を鳴らしたいのです。

数点のグラブハンドルを操作することで波形を描き、その波形の
座標をPCMのデータとして読み取って1秒間の長さまで繰り返して
再生したいのです。

PCMのデータなのでしらみつぶし方式でデータを取る事になります。

私のレベルではCanvas経由でデータを取る事しか思いつかないのですが、
TGPGraphic.DrawPathメソッドがMyPanel.Canvasに対して座標データを
吐き出しているんだろうなあ・・・と思い、直接読み出す方法があればと
相談に来ました。



[11704] Re3:G018_不定形な曲線の描画返信 削除
2018/1/29 (月) 19:56:37 Mr.XRAY
▼ takiさん

> 数点のグラブハンドルを操作することで波形を描き、その波形の
> 座標をPCMのデータとして読み取って1秒間の長さまで繰り返して
> 再生したいのです。


う〜ん,一体どんな音を奏でるのやら... (^^;


[11708] Re4:G018_不定形な曲線の描画返信 削除
2018/2/3 (土) 13:42:16 taki
▼ Mr.XRAYさん
>
> > 数点のグラブハンドルを操作することで波形を描き、その波形の
> > 座標をPCMのデータとして読み取って1秒間の長さまで繰り返して
> > 再生したいのです。
>
> う〜ん,一体どんな音を奏でるのやら... (^^;


取りあえず、波形が取れたので再生しています。
色々と試しましたが、「あ」「え」「お」に近い音は確認できました。
計算で作成したサイン波では単調な音しか再生されませんが、
手作業で作成したサイン波もどきはたくさんの音の成分が含まれているようです。


[11709] Re5:G018_不定形な曲線の描画返信 削除
2018/2/3 (土) 16:21:47 Mr.XRAY
> 取りあえず、波形が取れたので再生しています。
> 色々と試しましたが、「あ」「え」「お」に近い音は確認できました。
> 計算で作成したサイン波では単調な音しか再生されませんが、
> 手作業で作成したサイン波もどきはたくさんの音の成分が含まれているようです。


おおっ !!
面白そうですね.
なるほど,こういう感じでやるんですか.へぇ〜.
でも,目的の「音」を出すのは大変そう (^^;
「音声合成」とはまた違った味があるのかも知れません.


[11710] Re6:G018_不定形な曲線の描画返信 削除
2018/2/5 (月) 15:53:03 taki
▼ Mr.XRAYさん

> おおっ !!
> 面白そうですね.


「あ」から「お」に似た音ができました。
あくまでも「そんなかんじがするな〜」レベルの音です。
大雑把ですが低周波と高周波の微妙な割合でできているようです。



INCM/CMT
Cyclamen v3.82