C#またはDelphiでカーソル付きでスクリーンキャプチャし、ちょっとした編集(丸や四角で囲ったりなど)もできるソフトを作りたいのですが、カーソル付きでのキャプチャが難しいようで、なかなかいい方法を見つけれません。



いい方法と、サンプルを教えてください。
(方法・サンプルを知りたいので、ソフトの紹介などはコメント欄でお願いします。満足すれば別途ポイント送信でポイントを送りますので。ただし、質問自体を終了した場合は、コメント欄で紹介されてもポイントは払いません)
(方法・サンプルの紹介ではない場合(情報が足りないので補足してほしいなど)はコメント欄にてお願いします)
(コメント欄で補足するかもしれませんので確認をお願いします)

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2008/06/20 18:13:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:quintia No.1

回答回数562ベストアンサー獲得回数71

ポイント32pt

windows.pas にある関数たちを使って、キャプチャした画像に自分でカーソルを描画するみたいです。

var
  aRect:      TRect;    // キャプチャウィンドウRect構造体
  CurPos:     TPoint;   // マウスカーソル座標
  Bmp: TBitmap;
begin
:
:
      GetCursorPos(CurPos);
      DrawIcon( Bmp.Canvas.Handle, CurPos.X - aRect.Left, CurPos.Y - aRect.Top, GetCursor);

GetCursorPos

DrawIcon

GetCursor

の3つがwindows.pasに定義されています。


事前に画面からはみ出した部分を画像(Bmp)から削除している関係で、aRect に入っている情報で位置を調整しているようです。

id:kazubokkuri

Delphiでの方法ですね。

この方法でもいいのですが、このソースを見る限りでは、キャプチャしたときの「カーソル」ではなく、常に「通常の」カーソルを描画してしまうため、キャプチャをするとき、カーソルに独自のものを用いている場合(画像系の編集ソフトで編集中の場合とか)のときに、正しいカーソルが描画されないと思うのですが・・・


aRect変数にも、何も代入されていませんし、beginとGetCursorPosの間に:がある(略されているのですか?)など、明らかな文法違反・おかしい部分がありますし、コメント欄にてもうちょっと補足をお願いします。


ちなみに「みたい」「ようです」とのことですが、よければ参考になさったアドレスを書いていただけると助かります。

2008/06/14 21:53:10
id:xrowcc No.2

回答回数17ベストアンサー獲得回数1

ポイント38pt

http://xrowcc.blog.shinobi.jp/Entry/160/

当方で開発した上記のソフトウェアにてマウスカーソルのキャプチャを行っています。

開発言語がC++ですのでちょっと異なる箇所があるかもしれません。

方法は以下の通りです。

OSがXP,Vistaの場合は「GetCursorInfo」にてマウスカーソルの形状を取得し、

「DrawIconEx」で描画しています。

マウスカーソルの座標は「GetCursorPos」で取得できると思います。

尚、OSが2000の場合は上記の「GetCursorInfo」では形状取得ができず、

「AttachThreadInput」でアタッチ後に「GetCursor」でマウスカーソルの形状を取得しています。

完全に把握しているわけではないのですがとりあえず上記の方法でマウスカーソルのキャプチャに成功しています。

参考になれば幸いでございます。

id:kazubokkuri

ふむ・・・

紹介していただいたソフトのソースコードを見れないのが少し残念ですが、とりあえず方法は分かりました。ありがとうございます。

今日は所用でできないのですが、また明日にでもちょっと試してみます。

2008/06/16 16:54:08
  • id:taknt
    http://gimite.net/bcbqtree/qtreemain.cgi?mode=thread&thread=183
    http://www.vector.co.jp/soft/win95/art/se221399.html
    画面を動画ファイルにして保存

    http://www.hi-ho.ne.jp/tadokoro/menu/menu8_3.html
    それから最初のシーンを画像ファイルにする。

    たぶん、これでいけるんじゃないかと思いますが・・・・。
  • id:kazubokkuri
    かずぼっくり 2008/06/14 18:02:31
    すみません。
    紹介していただいたソフトとコードですが、ちょっとDelphiのインストールにてこずっている(実はまだインストールしてない(^^;;)ので、まだ確認が取れていません。

    が、コードを見る限りではカーソル付きでのキャプチャには見えません・・・


    僕の要望としては、最近の僕の回答でやっているスクリーンショットでの解説のようなことを素早く簡単にできるソフトが欲しいので、カーソル付きキャプチャは基本的に必須の方向で回答をお願いします。

    せっかく探していただいたのに、すみません・・・
  • id:taknt
    http://pc.nikkeibp.co.jp/article/NPC/20070827/280399/

    こちらは カーソルつきで キャプチャできるソフトです。
  • id:kazubokkuri
    かずぼっくり 2008/06/14 18:52:28
    実は今のところ、紹介していただいたWinShot+Photoshopを使用しているのですが、いちいちPhotoshopで加工するのも面倒な部分もあるので、これをキャプチャソフトでやりたいのです。
    ただ、そのようなソフトはあっても、個人的に肌に合わなかったり(テキストエディタとかこの系のソフトって人によって好みがありますよね)して、結局自分で作ってしまおうという結論に至ったものです。


    説明不足でしたが、
    http://q.hatena.ne.jp/1213412686#a835126
    でやっているような白縁取りの四角の赤線で囲う、白縁取りの文字を追加する
    などのような機能のほかにも、ちょっとした線の位置の調整など訂正の利くソフトだと最高ですね。
  • id:quintia
    >常に「通常の」カーソルを描画してしまうため、
    あ、本当ですね。ずっとこのソースで作った自作のキャプチャソフトを使ってきましたが、今ごろになって気づきました。

    手許にあるソースから書き写したもので、ソースに記してあるURLが今は全く別のコンテンツになっていたのでURLを記しませんでした。
  • id:quintia
    ツールの話になりますが、
    http://debugmode.com/wink/
    が使えると思います
    本来は動画キャプチャして、フラッシュ(swf)に書き出すことができるソフトです。
    ソフト上で、必要なコマだけ残して間引くこともできます。
    簡単ながら図形や、吹き出しなども入れられます。

    "HTMLで書き出し"を選ぶと、HTMLと複数の画像ファイル(BMP,PNG,JPEGなど)を書き出せます。
    カーソルも、プロパティで設定した形状で取得できました。
  • id:kazubokkuri
    かずぼっくり 2008/06/15 12:42:08
    補足ありがとうございます。
    ・・・そうですか。了解しました。

    紹介していただいたツールですが、静止画キャプチャではないので、少し面倒そうな気もしますが、なかなかよさげですね。
    ありがとうございます!!
  • id:quintia
    「タイムキャプチャーによる開始/停止」(つまり動画キャプチャ)を使わないで、「スクリーンショットを取る」だけを使うという選択肢もありえますよね。
  • id:kazubokkuri
    かずぼっくり 2008/06/15 14:14:20
    なるほど!できました。
    機能的にはほぼ問題なしです!
    が、インターフェイスが少し分かりづらかったりして、あまり素早く加工はできそうになさそうですね・・・
  • id:kazubokkuri
    かずぼっくり 2008/06/19 19:01:19
    明日、質問を終了する予定なので、回答予定の方は明日18時に終了するつもりでお急ぎを。
  • id:kazubokkuri
    かずぼっくり 2008/06/20 18:17:24
    終了しました。ポイント配分についてですが、今回はお二人の回答ともに「ズバリ!」とはいきませんでしたので、いるか賞はなしとさせていただきました。

    quintiaさんはコメント欄で、ソフトの紹介をしていただきましたし、xrowccさんはヒントに近いものを教えてくださいましたので、配分はほぼ平等にしましたが、多少でもxrowccの回答が一番理想に近かったので、少し多めに配分させていただきました。

    お二人とも回答、ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません