VB2010なのですが、FormやPictureBox等を使用せず、
デスクトップに直接画像ファイルを貼り付けるような事はできないでしょうか?

XY座標を指定し、デスクトップの特定の位置へ"最前面"の状態で
画像を表示したいのですが・・・FormやPictureBoxを使用せずに
実現する方法が分かりません。

APIを使用したらいけるのでしょうか。

似たような動作としては、壁紙を変更するといった方法を
見つけたのですが、あれだとバックに表示されてしまうので
"最前面にしたい"という点で困ってしまいました。

簡単なサンプルや参考になるページ等、アドバイスをいただけないでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

デスクトップに直接描画すると最前面にはならないと思いますよ。


FormBorderStyle=None
TopMost=True
のフォームじゃダメなんでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
やっぱりそう単純にはいかないのでしょうか。

実はそのFormに画像を配置し透過するという方法は
以前に実装しておりました。
(検索するとこの手の方法が第一にくるので)

Formを利用すると、XYZ座標の調整も簡単ですし
便利なのですが・・・

今回は色々なやり方を覚えたいという理由も兼ねているのですが、
ちょっとした理由がありFormを利用せずにいけないかと
思いまして。

Windows API か DirectXのスプライトのような機能を
使えばいけるのかと考えているところでした。

ご意見ありがとうございました。

お礼日時:2011/04/20 20:26

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q無料壁紙のサイトから素敵な海の写真を見つけ、デスクトップの背景に設定し

無料壁紙のサイトから素敵な海の写真を見つけ、デスクトップの背景に設定しました。
あまりにきれいなので、後日ブログの背景にも使いたいと思ってさがしたのですがどうしてもたどり着くことができません。
今デスクトップの背景になっている写真をフォトギャラリーに入れることはできますか?
パソコン初心者ですのでわかりやすく教えていただきたいのですが・・・
どうぞよろしくお願いいたします!!

Aベストアンサー

著作権はクリアされているとして、背景に設定した画像はそのままコピーしてフォトギャラリーに入れることは可能です。

マイピクチャフォルダの中の画像を右クリックから「背景に設定」とした場合
C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Windows Photo Viewer
に「Windows フォト ビューアー壁紙」という名称で保存されます。

Web上の画像をIEで右クリックから「背景に設定」とした場合
C:\Users\<ユーザー名>i\AppData\Roaming\Microsoft\Internet Explorer
に「Internet Explorer Wallpaper」という名前で保存されます。

QVB2010 でのPictureboxのフォント指定

VB2010 でのPictureboxのフォント指定

現在 Pictureboxのフォントをプログラムの先頭で定義しているのですが、

'-------------------------------------------------------------------------
Dim fnt As New Font("MS ゴシック", 9)

With PictureBox1
.Image = New Bitmap(.Size.Width, .Size.Height)
g1 = Graphics.FromImage(.Image)
g1.Clear(.BackColor)
End With

g1.DrawString("TEST" fnt, Brushes.Black, IX,IY)
'-------------------------------------------------------------------------

下記のようにループ内で指定したいのですが、どう定義すればいいでしょうか。
For i=1 to 10
<------------------------ここでfont指定したい
g1.DrawString("TEST" fnt, Brushes.Black, IX,IY)
next

VB2010 でのPictureboxのフォント指定

現在 Pictureboxのフォントをプログラムの先頭で定義しているのですが、

'-------------------------------------------------------------------------
Dim fnt As New Font("MS ゴシック", 9)

With PictureBox1
.Image = New Bitmap(.Size.Width, .Size.Height)
g1 = Graphics.FromImage(.Image)
g1.Clear(.BackColor)
End With

g1.DrawString("TEST" fnt, Brushes.Black, IX,IY)
'------...続きを読む

Aベストアンサー

フォントサイズを変えるだけなら
ただし、1とか2とかのサイズでフォントが正しく表示されるかどうかは知りません。

Dim fnt As Font

With PictureBox1
.Image = New Bitmap(.Size.Width, .Size.Height)
g1 = Graphics.FromImage(.Image)
g1.Clear(.BackColor)
End With

For i=1 to 10
fnt = New Font("MS ゴシック", i)
g1.DrawString("TEST" fnt, Brushes.Black, IX,IY)
' ↑ IX, IYが固定だと上書きで消える
fnt.Dispose() '不要かも
next

Qパソコンのデスクトップが一杯になったら

パソコンのデスクトップが一杯になった状態でPDFをデスクトップ上に保存しましたが、デスクトップ外に保存されたようで、エクスプローラーで確認したら、そのPDFはデスクトップ状に存在していることになっていました。
なのでデスクトップ上に空きを開けて、デスクトップ左クリックで最新の状態に更新しましたがでてきません。どうすればデスクトップ内に表示させられますか?

Aベストアンサー

どうしてもデスクトップに置きたいのなら、ちょっと整理をして見ましょう。
ジャンルで分類してもいいですが、最低ここ1ヶ月使ったことのないファイルを入れるホルダーと
PDFってホルダーを作ってはいかがでしょうか?
そして、PDFはPDFってホルダーに全部入れてしまいましょう。
そうすると、ディスクトップは非常にすっきりするはずです。
もちろんそのPDFってホルダーをクリックすると、PDFだけが表示されます。
それでもPDFでいっぱいになったら、新しいホルダーを作って保存するか、
いっそのこと、用意されたホルダを使うか、c;なりd:に移動させてそこで
展開させましょう。今あなたがやっている方法は、起動にとても時間がかかる方法です。
ディスクトップは最小限しか置いておかないのは鉄則です。

QVB2010の、Formを開く動作に関する質問です

VB2010のFormについてお聞きしたいことがあります。


例えばForm1とForm2の2つがあるとして、
・Form1上のボタンをクリック後Form2が表示される
・Form2を表示後Form1は自動で閉じられる。
この様な事をするにはどの様に行えばよろしいでしょうか?

試しに、
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Form2.Show()
  Me.Close()
End Sub
と、してみたのですが
Form2が表示された直後に1と2両方消えてしまいました。


改善方法を教えていただけると嬉しいです。
よろしくお願いいたします。

Aベストアンサー

Form1から Form2へ遷移して Form2からForm1へ戻るのであれば

Me.Close()
では無く
Me.Hide() または Me.Visible=false
としてみましょう

戻るときは
Application.OpenForm("Form1").Visible = True または Application.OpenForm("Form1").Show()
でいいと思います

戻る必要がないのであれば
IDE(統合環境)のメニューから

プロジェクト > 一番下の開発中のプロパティ > アプリケーションタブ >シャットダウンモードを
最後のフォームが閉じたとき に変更しましょう

Qデスクトップのアイコンがなくなった

いつもクイック起動にデスクトップのアイコンがあってたくさんファイルを開けててもデスクトップのアイコンをクリックするとすぐにデスクトップの画面に戻っていたのですが、
この前、デスクトップのアイコンが邪魔だったのでゴミ箱に入れてしまいました。それからというものデスクトップのアイコンが見つかりません。ファイルの検索をして「デスクトップ」って入れても出てきません。デスクトップのアイコンを出すにはどのようにすればいいのでしょうか?
宜しくお願いします。

Aベストアンサー

こちらのFAQが参考になるかも。

できるネット - [クイック起動]にあった[デスクトップの表示]アイコンが消えてしまったが、どうすれば元に戻せるか
http://dekiru.impress.co.jp/faq/win/win001.htm
秘密結社 - 006 クイック起動の「デスクトップの表示」アイコンを削除してしまった場合の復帰方法
http://www.efix.co.jp/sc/himitu/006.htm


> ファイルの検索をして「デスクトップ」って入れても出てきません。

あれ?
サブフォルダを探すのチェックが無かったから失敗…とかなら良いのですが。

参考URL:http://dekiru.impress.co.jp/faq/win/win001.htm, http://www.efix.co.jp/sc/himitu/006.htm

QVB.NET Form1からForm2を開いたり閉じたりする方法

VB.NET2005でForm1にあるCheckBoxをTrueにするとform2をモードレスフォームとして開き、CheckBoxをFalseにするとform2を閉じる方法がわかりません。また、form2の[×]で閉じた時にはForm1にあるCheckBoxをFalseにする方法がわかりません。
'-----------------------------------
Private Sub CheckBox2_CheckedChanged ・・・
  Dim f_cnt As Integer
  Dim form2 As New Form2()
  f_cnt = My.Application.OpenForms.Count
  If CheckBox1.Checked = True Then
    If f_cnt = 1 Then form1.Show() 'モードレスフォームとして表示する
  Else
   form2.Close() ←閉じない
  End If
End Sub
'-----------------------------------

VB.NET2005でForm1にあるCheckBoxをTrueにするとform2をモードレスフォームとして開き、CheckBoxをFalseにするとform2を閉じる方法がわかりません。また、form2の[×]で閉じた時にはForm1にあるCheckBoxをFalseにする方法がわかりません。
'-----------------------------------
Private Sub CheckBox2_CheckedChanged ・・・
  Dim f_cnt As Integer
  Dim form2 As New Form2()
  f_cnt = My.Application.OpenForms.Count
  If CheckBox1.Checked = True Then
    If f_cnt = 1 Then form1.S...続きを読む

Aベストアンサー

Form1にあるCheckBoxがCheckBox1なのかCheckBox2なのか・・・
>Private Sub CheckBox2_CheckedChanged ・・・
>If CheckBox1.Checked = True Then
ただ、vb.netでは
Private Sub CheckBox2_CheckedChanged(...) Handles CheckBox1.CheckedChanged
と言うのはアリで、上の場合ならCheckBox1のCheckedChangedイベントになります。
質問の・・・がどうなってるのかにもよりますが。
それと、vb2002,vb2003で必要だった(と言うかこちらが正当だという話もある)
Dim Form2のインスタンス As New Form2()
はいらないみたいです。
と言う訳で、Form1にあるCheckBox1からForm2と言う場合です。
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked = True Then
AddHandler Form2.FormClosed, AddressOf Form2FormClosed
Form2.Show()
Else
Form2.Close()
End If
End Sub
Private Sub Form2FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs)
CheckBox1.Checked = False
End Sub

Form1にあるCheckBoxがCheckBox1なのかCheckBox2なのか・・・
>Private Sub CheckBox2_CheckedChanged ・・・
>If CheckBox1.Checked = True Then
ただ、vb.netでは
Private Sub CheckBox2_CheckedChanged(...) Handles CheckBox1.CheckedChanged
と言うのはアリで、上の場合ならCheckBox1のCheckedChangedイベントになります。
質問の・・・がどうなってるのかにもよりますが。
それと、vb2002,vb2003で必要だった(と言うかこちらが正当だという話もある)
Dim Form2のインスタンス As New Form2()
は...続きを読む

Qデスクトップのアイコンがいっぱいになってきたのですがデスクトップで管理

デスクトップのアイコンがいっぱいになってきたのですがデスクトップで管理するのが便利だと思うようになりなかなか整理できずにいいます。
自分はデスクトップに何もおかないデザインが好きなで、Dockさえあればいいと思っています。

そこでデスクトップをもう一つつくれないかと思い、探してみましたが
デスクトップをもう一つつくれるのはつくれるのですが、既存のアイコンは変わらずウィンドウだけが消える仕組みです。
なのでデスクトップは見栄えの悪いままです。

デスクトップフォルダをもう一つ作るような気持ちで
二つのデスクトップができるようなフリーソフトを知りませんか?
雑な文ですいません;

回答よろしくお願いします。

Aベストアンサー

 
デスクトップに「もう一つ」という名のフォルダーを作り、その中にデスクトップのアイコンを入れればすっきりする
 

Q(VB2008EEです)Form1からForm2をモーダレスで表示(S

(VB2008EEです)Form1からForm2をモーダレスで表示(Show(Me))したのち、
Form2を、(Form2の)閉じるボタン(右上にあるXボタン)で閉じるときに、
単にHideするだけの処理に変更することは可能でしょうか。

デフォルトでは、閉じるボタンですと、Close()と同様、
Close(&Dispose)となると思いますが、Hide()処理に
変えられるかということです。

。。。

試しに、FormClosingイベントハンドラでHide()→e.cancel=Trueって
やってみたところ、(再度同じForm2のインスタンスを使ってShowができ、
さらに前回のText表示などが残っているなど)その場はうまく行ったように
見えたのですが、そうすると、アプリ(Form1)が閉じるボタンで終了しなくなって
しまいました。
(Application.Exitでもダメ、Endでは(強制終了とのことなので)OKですが)

Form2のClose処理をCancelしているからだ、とは思いますが。

ShowDialog→Xボタン(同じ記述のまま) の後では、終了可能です。

では、Show→Xボタンのあとで、同じインスタンスで、上記と同じように、
ShowDialog→Xボタンとしたあと、Form1のXボタンでアプリを
終了させようとするとどうなるか。

結果は、終了不能でした。
一度Show→Xしたらそれをどこかに覚えている?ってことなのでしょうか。。。

ここらへんの現象まで、合わせて説明できる方がいらっしゃったら
合わせてご説明いただけませんでしょうか。

。。。

なお、なぜこんなことするの?という実際論はここではなしで
純粋に技術論でお願いいたします。

(VB2008EEです)Form1からForm2をモーダレスで表示(Show(Me))したのち、
Form2を、(Form2の)閉じるボタン(右上にあるXボタン)で閉じるときに、
単にHideするだけの処理に変更することは可能でしょうか。

デフォルトでは、閉じるボタンですと、Close()と同様、
Close(&Dispose)となると思いますが、Hide()処理に
変えられるかということです。

。。。

試しに、FormClosingイベントハンドラでHide()→e.cancel=Trueって
やってみたところ、(再度同じForm2のインスタンスを使ってShowができ、
さらに前...続きを読む

Aベストアンサー

Form2のFormClosingのコードはどのようになっているのでしょう?

Xまたはシステムメニューの閉じるの場合だけHideを実行したいなら

Private Sub Form2_FormClosing( 引数省略 )
  if e.CloseReason = CloseReason.UserClosing then
    e.Cancel = True
    me.Hide()
  end if
End Sub
といった具合にしてみてはいかがでしょう

Q「デスクトップの表示」をタスクバーに移動すると…

「デスクトップの表示」というコマンド(絵で表現されてます)がデスクトップにあります。これをクリックすると当たり前ですが、デスクトップが表示されるのですが、これ、デスクトップにあったら何の意味もありませんよね。
そこでこれをクリックし、タスクバーに移動し、元のコマンドをゴミ箱に移動しました。
その後タスクバーに移した方の上に、矢印を持っていくと「デスクトップの表示へのショートカット」となり、これをクリックすると、「ショートカットの検索」となります。
これおかしいです。
タスクバーに「デスクトップの表示」と素直に出ればいいものを「デスクトップの表示へのショートカット」です。
だとすると、オリジナルの「デスクトップの表示」を削除してしまうと、この機能は完全に消えてしまうのでは?

正しい「デスクトップの表示」のタスクバーへの入れ方について教えてください。

Aベストアンサー

↓にやり方が出ています。

参考URL:http://dekiru.impress.co.jp/faq/win/win001.htm

QVB.NET/PictureBoxのサイズ

お世話になります。
VB.NETにて、アプリケーションの実行時にForm上のPictureBoxのサイズをマウスのドラッグで変更できるようにしたいのですが、そういったことは可能でしょうか?

Windows標準のペイントの様に、境界線をドラッグしてサイズ変更する、といったイメージです。

開発環境はVB.NET 2003 です。

Aベストアンサー

こんばんは。

苦肉の策っぽいですが。

フォームにPictureBoxだけを配置して、PictureBoxをフォームにDockプロパティをFillにしてドッキングさせます。

フォームはFormBorderStyleをSizableにすればマウスで大きさを変えられます。PictureBoxはドッキングしているので同じく大きさが変わります。

フォームのTextを無し、ControlBoxをFalseにすればタイトルバーが無くなるのでPictureBoxだけのように見えると思います。

ただしこれだと、フォームを閉じることが出来ないので、このフォームが子となるMDI親フォームを作りそこに表示させると良いでしょう。

どうでしょうか。


人気Q&Aランキング

おすすめ情報