C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
フォームを常に全面にし、操作だけは背面の画面に反映
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
ツリー表示
トピック表示
ランキング
記事検索
過去ログ
[トピック内 4 記事 (1 - 4 表示)] <<
0
>>
■87094
/ inTopicNo.1)
フォームを常に全面にし、操作だけは背面の画面に反映
▼
■
□投稿者/ 対中率
(1回)-(2018/04/11(Wed) 14:41:51)
分類:[C#]
.NET Framework 4.6.1 C#
現在、デスクトップ画面上から指定した範囲内を連続キャプチャし、GIF画像を生成するソフトを作っています。
マウスのドラッグドロップで範囲指定し、1枚画像をキャプチャするところまでできたのですが、これを連続撮影するように改修しています。
撮影中は枠線のみ表示した透明なForm(撮影範囲がわかるように)を表示させた状態にしたいです。
そのため、フォームを最前面に配置したいのですが、最前面に配置してしまうとフォームの背面にある物に対して操作を受け付けなくなってしまいます。
フォームを最前面にしつつ、キーボードやマウス操作のみ背面に反映する方法はないでしょうか。
どなたか助言お願いします。
引用返信
編集キー/
編集
■87099
/ inTopicNo.2)
Re[1]: フォームを常に全面にし、操作だけは背面の画面に反映
▲
▼
■
□投稿者/ Hongliang
(632回)-(2018/04/11(Wed) 17:00:17)
Regionプロパティで、フォームの一部分だけを表示させるように指定できます。これを試してみてはいかがでしょうか。
1. フォーム全域のRegionを作る
2. ClientRectangleを取得してをボーダー分Offset
3. 1のRegionに2のRectangleをExclude
引用返信
編集キー/
編集
■87101
/ inTopicNo.3)
Re[1]: フォームを常に全面にし、操作だけは背面の画面に反映
▲
▼
■
□投稿者/ 魔界の仮面弁士
(1638回)-(2018/04/11(Wed) 21:45:15)
■
No87094
(対中率 さん) に返信
> フォームを最前面にしつつ、キーボードやマウス操作のみ背面に反映する方法はないでしょうか。
枠線部もマウス操作を受け付けない方が良いでしょうか?
private void button1_Click(object sender, EventArgs e)
{
var fw = new FrameWindow();
fw.SetBounds(50, 100, 350, 250);
fw.Show(this);
}
private class FrameWindow : Form
{
protected override CreateParams CreateParams
{
get
{
const int WS_EX_NOACTIVATE = 0x8000000; // アクティブにならないフォームにする
const int WS_EX_TRANSPARENT = 0x20; // マウス操作を透過(要レイヤードウィンドウ)
var cp = base.CreateParams;
cp.ExStyle |= WS_EX_TRANSPARENT | WS_EX_NOACTIVATE;
return cp;
}
}
public FrameWindow()
{
ShowInTaskbar = false;
TopMost = true;
BackColor = Color.Blue; // 枠線色
Padding = new Padding(9); // 枠線幅
FormBorderStyle = FormBorderStyle.None;
Controls.Add(new Control() { BackColor = Color.Magenta, Dock = DockStyle.Fill });
// WS_EX_TRANSPARENT を有効にするには、
// TransparencyKey をセットするか、もしくは
// Opacity を 1.0 未満にする必要がある
TransparencyKey = Color.Magenta;
}
}
引用返信
編集キー/
編集
■87109
/ inTopicNo.4)
Re[2]: フォームを常に全面にし、操作だけは背面の画面に反映
▲
▼
■
□投稿者/ 対中率
(2回)-(2018/04/12(Thu) 01:27:04)
魔界の仮面弁士さんありがとうございます!
希望通りの動作を100%実現することができました!
助かりました
■
No87101
(魔界の仮面弁士 さん) に返信
> ■
No87094
(対中率 さん) に返信
>>フォームを最前面にしつつ、キーボードやマウス操作のみ背面に反映する方法はないでしょうか。
>
> 枠線部もマウス操作を受け付けない方が良いでしょうか?
>
>
> private void button1_Click(object sender, EventArgs e)
> {
> var fw = new FrameWindow();
> fw.SetBounds(50, 100, 350, 250);
> fw.Show(this);
> }
>
>
> private class FrameWindow : Form
> {
> protected override CreateParams CreateParams
> {
> get
> {
> const int WS_EX_NOACTIVATE = 0x8000000; // アクティブにならないフォームにする
> const int WS_EX_TRANSPARENT = 0x20; // マウス操作を透過(要レイヤードウィンドウ)
> var cp = base.CreateParams;
> cp.ExStyle |= WS_EX_TRANSPARENT | WS_EX_NOACTIVATE;
> return cp;
> }
> }
> public FrameWindow()
> {
> ShowInTaskbar = false;
> TopMost = true;
> BackColor = Color.Blue; // 枠線色
> Padding = new Padding(9); // 枠線幅
> FormBorderStyle = FormBorderStyle.None;
> Controls.Add(new Control() { BackColor = Color.Magenta, Dock = DockStyle.Fill });
>
> // WS_EX_TRANSPARENT を有効にするには、
> // TransparencyKey をセットするか、もしくは
> // Opacity を 1.0 未満にする必要がある
> TransparencyKey = Color.Magenta;
> }
> }
解決済み
引用返信
編集キー/
編集
このトピックをツリーで一括表示
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
入力内容にタグは利用できません。
他人を中傷する記事は管理者の判断で予告無く削除されます。
半角カナは使用しないでください。文字化けの原因になります。
名前、コメントは必須記入項目です。記入漏れはエラーになります。
入力内容の一部は、次回投稿時の手間を省くためブラウザに記録されます。
URL は自動的にリンクされます。
記事中に No*** のように書くとその記事にリンクされます(No は半角英字/*** は半角数字)。
名前
(*必須)
E-Mail (任意)
Web サイト (任意)
投稿モード
通常モード
図表モード (ソースコードを貼る場合はこちらを使用)
本文
(質問の場合は、開発環境・使用言語のバージョンなどを最初に書いてください)
■No87109 (対中率 さん) に返信 > 魔界の仮面弁士さんありがとうございます! > 希望通りの動作を100%実現することができました! > 助かりました > > > > ■No87101 (魔界の仮面弁士 さん) に返信 >>■No87094 (対中率 さん) に返信 > >>フォームを最前面にしつつ、キーボードやマウス操作のみ背面に反映する方法はないでしょうか。 >> >>枠線部もマウス操作を受け付けない方が良いでしょうか? >> >> >>private void button1_Click(object sender, EventArgs e) >>{ >> var fw = new FrameWindow(); >> fw.SetBounds(50, 100, 350, 250); >> fw.Show(this); >>} >> >> >>private class FrameWindow : Form >>{ >> protected override CreateParams CreateParams >> { >> get >> { >> const int WS_EX_NOACTIVATE = 0x8000000; // アクティブにならないフォームにする >> const int WS_EX_TRANSPARENT = 0x20; // マウス操作を透過(要レイヤードウィンドウ) >> var cp = base.CreateParams; >> cp.ExStyle |= WS_EX_TRANSPARENT | WS_EX_NOACTIVATE; >> return cp; >> } >> } >> public FrameWindow() >> { >> ShowInTaskbar = false; >> TopMost = true; >> BackColor = Color.Blue; // 枠線色 >> Padding = new Padding(9); // 枠線幅 >> FormBorderStyle = FormBorderStyle.None; >> Controls.Add(new Control() { BackColor = Color.Magenta, Dock = DockStyle.Fill }); >> >> // WS_EX_TRANSPARENT を有効にするには、 >> // TransparencyKey をセットするか、もしくは >> // Opacity を 1.0 未満にする必要がある >> TransparencyKey = Color.Magenta; >> } >>}
編集キー
自分の投稿を編集する時に必要です
(半角8文字以内)
解決済み
/
解決したらチェックしておきましょう。
プレビュー/
管理者用
-
Child Tree
-