始めて質問します。
プログラミング初心者なんですが、自分のお気に入りの写真があるので、それでスクリーンセーバーを作ってみようと思っています。
ですが、他のサイトのやつだとなんかいまいち(説明で使ってる機械が古くて、今使ってる環境でどうやって作ればわかんない)で、ここで聞けば一番いい方法が分かるかな?と思っています。
開発環境
OS Windows8.1
開発ソフト Visual Studio community2013
開発言語は問いません。できればさまざまな種類で違うバージョンを作ってみたいです。
お願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
C#で書いてみました。
マイピクチャ以下に置かれているjpgファイルを5秒間隔でランダムに表示します。
Windows FormsなのでDirectXのような高速表示は出来ませんが、十分実用レベルかと思います。
手順としては
0. ファイル一覧を文字列の配列で取得
0. 一定時間ごとに配列からランダムで一要素を選択
0. PictureBoxコンポーネントに貼り付け
これだけです。
スクリーンセーバーということでマウスカーソルが動いたら終了するようにもしてあります。
lang
1using System; 2using System.IO; 3using System.Windows.Forms; 4 5public partial class ScreenSaverWindow 6 : Form 7{ 8 // 表示する画像を切り替える間隔を指定します。単位は秒。 9 private const int ChangingPictureInterval = 5; 10 // 表示したい画像群を含むフォルダを指定します。 11 private readonly string TargetDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); 12 13 private System.Threading.Timer timer; 14 private System.Drawing.Point cursorPoint = Cursor.Position; 15 16 public ScreenSaverWindow() 17 { 18 this.InitializeComponent(); 19 } 20 21 private void ShowRandomImage(object imageFiles) 22 { 23 var files = (string[])imageFiles; 24 pictureBox.Invoke((Action)(() => 25 { 26 var rand = new Random(); 27 int index = rand.Next(files.Length); 28 29 pictureBox.ImageLocation = files[index]; 30 })); 31 } 32 33 private void SetQuitHandler(Control control) 34 { 35 control.MouseMove += (sender, e) => 36 { 37 // カーソルが動いたら終了 38 if (e.Location != this.cursorPoint) 39 { 40 this.timer.Dispose(); 41 Environment.Exit(0); 42 } 43 }; 44 } 45 46 private void Form_Load(object sender, EventArgs e) 47 { 48 string[] picFiles = Directory.GetFiles(TargetDirectory, "*.jpg", SearchOption.AllDirectories); 49 50 // 定期的に実行されるスレッドを開始 51 this.timer = new System.Threading.Timer( 52 this.ShowRandomImage, 53 picFiles, 54 TimeSpan.Zero, 55 TimeSpan.FromSeconds(ChangingPictureInterval)); 56 57 this.SetQuitHandler(pictureBox); 58 } 59} 60/// <summary> 61/// フォームのコンポーネントを定義 62/// </summary> 63public partial class ScreenSaverWindow 64 : Form 65{ 66 internal PictureBox pictureBox = new PictureBox(); 67 68 private void InitializeComponent() 69 { 70 this.SuspendLayout(); 71 72 pictureBox.Dock = DockStyle.Fill; 73 pictureBox.SizeMode = PictureBoxSizeMode.Zoom; 74 75 // フルスクリーン化 76 this.FormBorderStyle = FormBorderStyle.None; 77 this.WindowState = FormWindowState.Maximized; 78 this.Controls.Add(pictureBox); 79 80 this.Load += Form_Load; 81 this.ResumeLayout(false); 82 } 83} 84 85static class Program 86{ 87 [STAThread] 88 static void Main() 89 { 90 Application.EnableVisualStyles(); 91 Application.SetCompatibleTextRenderingDefault(false); 92 Application.Run(new ScreenSaverWindow()); 93 } 94}
投稿2015/04/23 08:01
編集2015/04/23 08:27総合スコア870
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/04/23 08:11
0
言語は”実行ファイル”が作れる言語ならなんでもいいです(*゚∀゚)
簡単な手順↓
1.画像表示ソフトを作る
2.拡張子をexeからscrに変更
3.手順2で作ったものをシステムフォルダに置く(例:c:\windows)
4.スクリーンセーバーの設定画面で作ったものを選ぶ
以上です。
投稿2015/04/23 05:12
総合スコア258
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/04/23 05:20
2015/04/23 13:06
0
スライドショーですか?
プログラミングしなくてもいいですよ
どっかのフォルダに使いたい画像を入れ(このフォルダには出したくない画像を入れてはいけない)、
[コントロールパネル]→[デスクトップのカスタマイズ]→[スクリーンセーバーの変更]の手順で行き
スクリーンセーバー(S)内のコンボボックス(コンボボックスで合ってるかな?違うと思うけど)で「写真」をえらび設定ボタンを押し使用する画像の場所の参照ボタンを押し使いたい画像の入っているフォルダを選びOKを押し保存を押しOKを押すだけ。
投稿2015/05/11 09:16
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。