• 締切済み

C#でスクリーンセーバーを作るサンプル

お世話になります。 表題の通り、C#でスクリーンセーバーを作りたいのですが、 具体的な方法が解りません。 様々なサイトで、作り方が載っていたり、サンプルなども あったりするのですが、どれも動いたものがありません。 環境は、Visual Studio 2010 C# ExpressEditionです。 真っ暗な画面の中を、一つのイメージが動き回るだけの サンプルで構いませんので、方法や解説ではなく、 『この通りに書けば動くぞ』というサンプルを教えてください。 よろしくお願いします。

みんなの回答

回答No.2

Windowsの場合、普通に「Project1.exe」などのように、単なる「実行ファイル」として作成して、拡張子を「.exe」から「.scr」に変えれば良い。それを、C:\Windows\System32のフォルダに放り込むだけ。

  • mindatg
  • ベストアンサー率48% (110/227)
回答No.1

OSは何でしょうか。Aeroの有無やシステムの設定(パフォーマンス優先とか)その辺が関係しているかもしれません。 参考として簡単なPictureBoxを表示させるサンプル(プロジェクトファイルもあります) http://www.geekpedia.com/tutorial65_How-to-make-a-screen-saver.html 一応VS2008、Win7Pro x86でそのままビルドして動くのを確認しています。 サンプルでは private void timer1_Tick(object sender, System.EventArgs e) { // set the new X position of the PictureBox to random number int newX = rand.Next(0, (this.Size.Width - pictureBox1.Size.Width)); // set the new Y position of the PictureBox to random number int newY = rand.Next(0, (this.Size.Height - pictureBox1.Size.Height)); // and actually move the PictureBox to the new position pictureBox1.Location = new Point(newX, newY); } このように、一定時間ごとにランダムな位置へ瞬間移動させています。 tiomer1_Tickで座標の計算を行い、pictureBox1_Paintイベントを作成しその中できっちりと Graphics g = e.Graphics; g.DrawImage(bmp, PosX, PosY); みたいに再描画すればよいかと思います。 座標計算も画面の解像度を取得して、XかYかが画面端に付いたら動く方向を変える等工夫できるかと。 全く動作しない、の原因を調べるには情報が足らず冒頭の事くらいしか助言できません。

tatapatank
質問者

補足

早速の回答、ありがとうございます。 頂いたサンプルは正しく動いたのですが、自作で作った方は、 実際の(ス)クリーンセーバーでエラーが出て 止まってしまいます。 以下がその内容です。 This application could not be started. Do you want to view information about this issue? このようなダイアログが出て、はいを選ぶと http://support.microsoft.com/kb/2715633 のサイトが開きます。 ちなみに、OSはWin7と8です。 以上、引き続きお願いいたします。