【Windows 8.1】ストアアプリが最大3つまで同時表示可能に

Windows8が発表された当初はWindowsWindowになっちゃったと、揶揄されていましたが、Windows8.1ではストアアプリを同時に3つまで表示する事ができるようになり、Window3になりました。

 

こんな感じ↓で。

 

さらにマルチモニタだと、6つのストアアプリを表示できます。

 

正確には24インチ以上のモニタで横幅が2560画素以上の解像度のモニタを使うと4つのアプリが同時表示可能らしいのですが、そんなモニタ持っていないので、評価出来ず...

 

この3つのアプリを同時に表示する方法は、まず、1つ目のアプリを開き、マウスをアプリの一番上まで持っていき、アイコンが手のひらマークになるようにします。

 

 

次にマウスの左ボタンをクリックしたまま、アプリを下に引きずり下ろすようにします。

 

 

さらに、この状態でアプリを画面の左右どちらかへ移動すると、画面中央付近に仕切り線が表示されるので、アプリを表示したい側へドロップします。

 

 

アプリが片側に表示された状態で、マウスを画面左下へ持っていき、スタートボタンをクリックし、スタート画面を表示させ、2つ目のアプリを実行します。

 

 

同様に3つ目のアプリを開くと、仕切り線上にアプリが表示されるので、2つの同時だけで良いなら、開いた3つ目のアプリ上の左右どちらかをクリックすると、クリックした側へアプリが表示されます。

 

 

3つ同時にアプリを表示させるには、3つ目のアプリを左ボタンでクリックしたまま、上側へ移動させます。

 

 

すると、真ん中に3つ目の表示スペースが現れるので、そこへアプリをドロップします。

 

そしてこちらがアプリを3つ同時に表示させた様子↓

 

 

ただし、同時に表示できるのは違うアプリだけのようで、例えば2つのPDFファイルを同時に2個並べてリーダーのアプリで確認する、みたいな事ができません。

少なくともWindows8.1 Previewでは。

(この場合はデスクトップ画面で、Acrobat Readerなどを使うのが普通ですかね?!)

 

この辺も改善されるといいのですが...

 

Windows8入門へ戻る

【Windows 8.1】スタート画面の背景を任意画像に設定する方法

Windows8ではスタート画面の背景はあらかじめ用意されている画像のみしかスタート画面の背景に設定できませんでした。

Windows8.1では、これを任意画像に設定する事が出来ます。

(正確にはデスクトップの背景の画像と同じ物を使う事ができるようになりました。)

 

こんな感じで↓

 

設定方法はデスクトップモードの時のタスクバーを右クリックし、プロパティを選択します。

 

次に表示されたタスクバーとナビゲーションのプロパティのウィンドウのナビゲーションのタブを選択し、スタート画面にデスクトップの背景を表示するにチェックを入れ、OKボタンをクリックします。

 

 

これで、スタート画面の背景もデスクトップと同じ画像を使用する事が可能となります。

 

Windows8入門へ戻る

無料の画面キャプチャソフト『Screenpresso』

私がブログやマニュアルを書くときに必需品となっている、フリーの画面キャプチャソフトのScreenpressoを紹介したいと思います。

 

このScreenpressoで何ができるかと言うと、PrintScreenボタンを押すと、画面上のウィンドウ領域を勝手に認識してウィンドウ領域をコピーしてくれるのはもちろんの事、ウィンドウ内のツールバーやボタンなどのコントロール領域も認識してコピーしてくれます。

もちろん、任意領域のコピーも可能です。

さらに、無料版だと録画時間に制限があるものの、画面の操作の様子を動画で保存することも出来ます。

 

また、コピーした画像のエディタ機能もあり、画像サイズのリサイズやぼかしや文字、矢印を入れたり、無料で使える範囲内でも十分に使えます。

 

【画像の編集例】

 

ダウンロード先はこちら↓のページより

http://ja.screenpresso.com/

 

右上のダウンロードボタンをクリックし、ダウンロードはこちらよりダウンロードします。

 

 

ソフトの動作も軽いしホント便利なので、まずは使ってみては如何でしょうか!

おススメです。

 

ちなみに、Windows8.1でも動作しました。

【Windows 8.1】PC設定の変更が大変更

Windows 8でWindows Updateなどは、チャーム設定PC設定の変更と行っていたのですが、Windows 8.1では、このPC設定の変更の画面がかなり変更されました。

 

ざっくり言うと、設定項目が増えて、各設定はフォルダにまとめられて表示の階層が一つ下がった感じ。

 

【Windows8のPC設定の変更】

 

 

【Windows8.1のPC設定の変更】

 

 

以下、設定項目のメニュー部分です。

 

 

 

 

 

 

 

 

 

 

 

 

 

Windows UpdateもWindows8.1ではPC設定の保守と管理Windows Updateのように一つ階層が下がっています。

 

Windows8入門へ戻る

【Windows 8.1】スタートボタンの復活!?

Windows8.1ではスタートボタンの復活がバージョンアップの目玉の一つだと思います。

 

スタート画面では、何かアプリを1つ以上立ち上げた状態で、マウスを左下に近づけるとスタートボタンが表示されます。

 

デスクトップモードでは常にスタートボタンは表示されています。

 

しかし!!

 

このスタートボタンは従来のWindows7のようなスタートメニューが表示される訳でもなく、スタートボタンをクリックするとスタート画面が表示されるのみ!となっています。

 

それだと、さすがにあまりにも・・・なので、このスターボタンを右クリック(もしくはWinキー+X)すると下図のようなメニューが表示されます。

 

 

Windows8の分かりづらいポイントのシャットダウンが付いた事は少しましになったでしょうか?

でも、スタートボタンをクリックした時は、やっぱりプログラムの一覧が表示される事を期待しますよね?

そこで、このメニューにプログラムへのショートカットを追加(WinXフォルダに追加)しようと試みたのですが、出来ずに断念。

(スタートメニューにこだわるのであれば、素直にスタートボタンアプリを使っちゃった方が早いでしょう。)

 

ただし、このスタートボタンをクリックした時の挙動は少し変える事が出来て、デスクトップモードのタスクバーを右ボタンでクリックし、プロパティを選択すると、タスクバーとナビゲーションのプロパティウィンドウが表示され、ナビゲーションタブを選択するとスタート画面という項目があるので、このスタート画面への移動時にアプリビューを自動的に表示するにチェックを入れます。

 

 

この設定の状態で、スタートボタンをクリックするとアプリビュー(Windows8でのすべてのアプリ)が表示されます。

 

 

これで、ちょっとスタートボタンをクリックした時にプログラム一覧を表示できるような気になりますが、やっぱり以前のようなメニューの方がいいですよね?!

 

せめて、こんな感じ↓でフォルダっぽくして欲しい!!!

 

Visual Studio 2013のPreviewもインストールしてみたら、1画面で見えるアプリビューの半分ぐらいをVisual Studioに占有されたました...

 

う~ん。見づらい。

 

で、結局、これ↓で落ち着いています。

 

 

このやり方は【Windows8】スタートメニューっぽいのを作成のページを参考にして下さい。

 

Windows8はストアアプリも使えるデスクトップメインのOS。

Windows RTはデスクトップアプリも使えるストアアプリメインのOS。

 

という感じに住み分けしてくれないかな~。

仕事(検査装置など)で使うには、今のWindows8は使いづらい。

 

Windows8入門へ戻る

【Windows 8.1】スタートアップにプログラムを登録する方法

カテゴリー:Windows8,Windows10


Windows8の時でもスタートアップにプログラムを登録する事はできたのですが、Windows8を起動した時点でスタート画面が表示され、デスクトップに移行した時に初めてスタートアップのプログラムが起動する仕様だったので、少し使い勝手の悪い物となっていました。

 

しかし、Windows8.1では、PC起動後にデスクトップ画面から起動する事が出来るようになったので、これで、PC起動後にスタートアップに登録したプログラムを起動する事が出来るようになりました。

 

スタートアップへの登録は少し面倒なのですが、以下の通りです。

 

まず、スタートアップフォルダが隠しファイル以下の部分にあるので、エクスプローラを起動し、上部にある表示タブをクリックし、隠しファイルにチェックを入れます。

 

次にスタートアップのフォルダへ移動します。
【ローカルユーザーのスタートメニューへ追加する場合】
Windows8(C:)⇒ユーザー⇒[ユーザー名]⇒AppData⇒Roaming⇒Microsoft⇒Windows⇒スタートメニュー⇒プログラム⇒スタートアップ
※[ユーザー名]の部分には、それぞれお使いのユーザー名が入ります。

 

【オールユーザーのスタートメニューへ追加する場合】
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

 

上記フォルダ内にスタートアップで起動するプログラムのショートカットを保存します。

(下図はGoogle Chromeをスタートアップに登録した様子)

 

 

これで、PC起動後にプログラムを起動する事ができるようになりました。

これが出来なかったせいか?Windows8はあまり装置物に使われる事が無かったように思います。

これで、少しはWindows8.1が使われるようになるか?

 

Windows8入門へ戻る

Windows8向けマウスの設定方法

以前、私のブログ内のWindows8をデスクトップPCで快適に使うためのキーボード、マウス設定として、記事を書いたのですが、この記事を書いた当時は、まだWindows8が出たてで、明確なWindows8向けの設定というのはありませんでした。

 

しかし、現在のMicrosoftマウスキーボードセンターというマウス/キーボード設定ソフトでは、Windows8の設定が追加されています。

 

マウスの設定は、コントロールパネルマウスをクリックし、設定画面を開きます。

 

 

開いたウィンドウのMicrosoftマウスの設定を変更するには、ここをクリックしますをクリックします。

 

するとMicrosoftマウスキーボードセンターの画面が開くので、マウスの絵の部分の設定を変更したいキーの部分をクリックします。(下図の状態)

 

 

 

さらにすべてのコマンドを表示をクリックします。

 

 

 

 

 

すると、Windows8のコマンドという項目があるので、お好きなボタンを割り振るといいかと思います。

 

ちなみに、私は左右のボタンにWindowsの「スタート」メニューに移動するチャームを割り振っています。

 

また、最近使ったアプリを開くという項目もあるので、この機能(下図のように起動中のアプリ一覧が表示される機能)もどこかのボタンに割り振ると便利かも?しれません。

 

 

 

 

Windows8入門へ戻る

【Windows 8.1】デスクトップ画面から起動させる方法

Windows8.1からは起動時にスタート画面を表示させることなく、直接、デスクトップ画面から起動する事ができるようになりました。

 

設定方法は以下の通り。

 

まず、デスクトップ画面を表示し、タスクバー上でマウスの右ボタンをクリックします。

 

 

表示されたメニューのプロパティをクリックします。

すると、タスクバーとナビゲーションのプロパティというウィンドウが表示されるので、ナビゲーションのタブを選択し、中央付近にある、サインイン時にスタート画面ではなくデスクトップに移動するにチェックを入れOKボタンまたは適用ボタンをクリックします。

 

 

これで、次回起動時からはデスクトップ画面からの起動となります。

 

Windows8入門へ戻る

Windows8.1 Preview版の入手先 

本日、Windows8.1のPreview版が公開されました。

Windows8.1の入手先はこちら↓

http://windows.microsoft.com/ja-jp/windows-8/preview

 

 

ただし、今のところインストールできるのはWindows8(正規版)のPCからのみ?

評価版のWindows8や他のバージョンからのインストールには、ISOファイルが必要と言われてしまうのですが、現状では、まだ公開されていません。

 

1日遅れでISOファイルも公開されました。

ただし、「重要」の項目にも書いてありますが、

ISO を使って Windows 8.1 Preview をインストールした場合はアンインストールできません。

との事なので、ご注意を。

 

 

Windows8入門へ戻る

【C#】グローバル変換を使ったアフィン変換

.NETで画像や線などを描画する時はGraphicsオブジェクトに対して描画を行いますが、このGraphicsオブジェクトの座標系をアフィン変換する処理をグローバル変換と言います。

 

グローバル変換された Graphicsオブジェクトに対し描画を行うと、アフィン変換された状態で、画像や線が描画されます。

 

ただ、一般的なアフィン変換では

 

 

のように表現される場合が多いかと多いと思いますが、マイクロソフトの仕様では、上記の行列を転置(行と列を反転する)した

 

 

のように表示されます。

また、アフィン変換の座標系は下図のように、左上が原点、Y軸は下方向、回転は時計周りが正の方向となります。

 

 

そのため、平行移動や拡大縮小、回転の変換行列も一般的な変換行列を転置した表現となります。

 

X軸方向へTx、Y軸方向へTyだけ移動する平行移動の変換行列は、

 

X軸方向へSx倍、Y軸方向へSy倍だけ拡大する変換行列は、

 

原点まわりにθ°回転移動する変換行列は

 

となります。

少し紛らわしいので、一般的なアフィン変換と混同しないように注意して下さい。

このように表現するのは、私の経験的にはマイクロソフトだけ?だと思います。

(参考)

http://msdn.microsoft.com/ja-jp/library/vstudio/c499ats3.aspx

http://msdn.microsoft.com/ja-jp/library/vstudio/8667dchf.aspx

 

しかし、.NET Frameworkでは特に変換行列を知らなくても、アフィン変換用のメソッドが用意されているので、それらを使うと間違いが少ないでしょう。

 

平行移動は TranslateTransform
拡大縮小は ScaleTransform
回転移動は RotateTransform

 

(参考)Graphicsメソッド

http://msdn.microsoft.com/ja-jp/library/system.drawing.graphics_methods%28v=vs.80%29.aspx

 

逆に、行列を使ってアフィン変換する事も可能なので、スキュー変換のような変換も行う事ができます。

(参考)

http://msdn.microsoft.com/ja-jp/library/system.drawing.drawing2d.matrix_methods%28v=vs.80%29.aspx

 

また、アフィン変換を行うと、変換後の座標から、変換前の座標を計算したい場合がありますが、System.Drawing.Graphics.TransformPointsというメソッドがあるので、これを使うと簡単に座標が求められます。

 

これらのメソッドを使って、アフィン変換のサンプルプログラムを作成しました。

 

(ダウンロード)GlobalTransformations.zip(Visual Studio 2008 Exress C#)

 

このサンプルでは見た目上では一般的に用いられる行列の表現に合わせています。
また、エラー処理などは行っていないので、ご了承下さい。

アフィン変換の勉強の手助けになれば...

 

C#へ戻る

64bit対応ユーザーコントロール作成方法

64bitに対応したユーザーコントロール(カスタムコントロール)を作成するには、前提条件として

 

Visual Studio はOSが64bitであっても32bitで動作している!

 

という点に注意しないといけません。

つまり、プラットフォームを64bitで作成したユーザーコントロールをVisual Studioのフォームデザイナでフォーム上に配置すると、32bitプログラムから64bitプログラムを呼び出す事になるので、フォームデザイナがエラーとなり、フォームを表示してくれません。

 

これを回避するためには、ユーザーコントロールのプラットフォームをAny CPUに設定して下さい。

 

この時点で、Any CPUの設定がないC++/CLIのユーザーコントロールは64bit対応ができないという事になります。

これを知らずにC++/CLIのユーザーコントロールを32bitである程度作成してしまい、64bitに対応させようと思った時に、エライ目に会いました...→結局、C#で作り直すハメに。

 

次に私がハマったのが、ユーザーコントロールからアンマネージのライブラリを呼ぶ場合の処理。

 

作成したプログラムのプラットフォームがAny CPUの時の挙動ですが、

32bitOSの場合:32bitのライブラリを呼び出す

64bitOSの場合:64bitのライブラリを呼び出す

となります。

 

つまり、64bitOS環境でユーザーコントロールを開発すると、Visual Studioで開発中にフォームデザイナでは、Any CPUのユーザーコントロールから、64bitのライブラリを呼び出そうとします。

ユーザーコントロールはフォームに配置した時点で、コントロールのプロパティやコンストラクタ、各種イベント処理が動いてしまうので、この時に64bitライブラリの関数が呼ばれてしまうと、フォームデザイナがエラーとなってしまいます。

 

これを回避するには、フォームがデザインモードかどうかを調べる

 System.ComponentModel.Component.DesignModeプロパティ

を用います。

この値がtrueの場合、64bitライブラリの関数を呼び出さないようにすると、回避できます。

 

さらに話をややこしくするのが、DesignModeプロパティはコンストラクタや入れ子となったユーザーコントロールでは正しい値が取得できません

そのため、DesignModeプロパティを取得する際には注意して下さい。

(参考)

http://support.microsoft.com/kb/839202/ja

http://social.msdn.microsoft.com/Forums/ja-JP/csharpexpressja/thread/d946a597-0ba4-4880-b99b-13c728e2f39f

 

まとめると、

●ユーザーコントロールはVB.NETもしくはC#でプラットフォームをAny CPUにして作成する。

●デザイン時に64bitライブラリの関数を呼び出さい。

 

という感じでしょうか?

 

VB.NETやC#だけで作るならプラットフォームは全てAny CPUにしておくと、あまり64bit対応の事は気にしなくても大丈夫ですね。

また、逆に32bit対応のライブラリしかなく、32bitで動くプログラムを作る場合は、64bit対応のライブラリが呼び出されないように、プラットフォームをAny CPUにはせずに、Win32に設定しておく必要があります。

 

Visual Studioへ戻る

【VisualStudio2012】ツールバーにソリューションプラットフォームを追加する

C言語などでは特に32bit/64bitプログラムを作る時にはVisual Studioのソリューションプラットフォームの部分で、Win32やx64などの切り替えを行っていると思います。

 

(画面はVisual Studio Express 2012 for Windows Desktop)

 

しかし、Visual Studio Professonal 2012では、なぜか?ツールバーにソリューションプラットフォームの切り替えのドロップダウンが表示されていません。

 

(画面はVisual Studio Professional 2012)

 

そこで、ソリューションプラットフォームをツールバーに追加するには、まず、ツールバー右端にある▼の部分をクリックします。

 

 

すると、ボタンの追加または削除(A)と表示されるので、この部分にマウスポインタを合わせると、下図のようなメニューが表示されます。

 

 

ここから、ソリューションプラットフォームを追加すると、ツールバー上にソリューションプラットフォームが追加されます。

 

 

さらに、なんとなく検索も追加してみました。

 

 

これで、慣れ親しんだ感じになりました。

 

Visual Studioへ戻る

【C#】四捨五入

C#で、これまで四捨五入というと何となく

 

double y = (int)(x + 0.5);

 

とか、

 

double y = System.Math.Round(x);

 

と、行っていたのですが、画像処理で補間処理を行う時に、座標を四捨五入しようとすると、実は自分の思う通りに動いていなかった事に今更ながらに気が付いた...

 

何はともあれ、int、Roundを使った方法にプラスして、Floorを使って、このようなコード↓

int i; 
double x; 
double y_int, y_Round, y_Floor; 

for (i = -30; i <= 30; i++) 
{ 
	x = i * 0.1; 
	y_int = (int)(x + 0.5); 
	y_Round = System.Math.Round(x); 
	y_Floor = System.Math.Floor(x + 0.5); 

	System.Diagnostics.Debug.WriteLine( 
		x.ToString() + ", " + 
		y_int.ToString() + ", " + 
		y_Round.ToString() + ", " + 
		y_Floor.ToString() 
	); 
}

を実行すると、結果は下図のようになります。

 

 

これを見ると、intを使った方法では、-1.4~+0.4までがとなり、マイナス側の結果がいまいち。

Roundを使った方法では、一見良さそうなのですが、よ~く結果を見てみると、

0.50に、1.52になっている。

 

これは銀行型丸め(偶数丸め)と言うらしく、整数の間の値は、最も近い整数に丸めこまれるが、距離が同じ場合は偶数の値を返すとのこと。

(参考)

Math.Round メソッド

http://msdn.microsoft.com/ja-jp/library/wyk4d9cy.aspx

 

そんな事、全く知らなかった~

 

という事で、結局はFloorを使うと、小数の値が10個ずつ整数へ変換されているので、画像の座標に関する四捨五入では、ムラなく整数へ変換されているFloorを使うのが良さそうです。-0.5⇒0, -1.5⇒-1へと変換される部分が、ちょっと気持ち悪いですが。

 

(追記)
コメントにもあるように、数学的には四捨五入は
double y = System.Math.Round(x, MidpointRounding.AwayFromZero);
とすると良いと思います。

ここでの記事は、あくまで、座標を丸める場合のお話です。

 

C#へ戻る

【C#】手動ダブルバッファによる高速描画

先日、Graphicsオブジェクトの違いによる描画速度の比較として、割と一般的なGraphicsオブジェクトに対して、描画速度を比較を行いましたが、結果、DoubleBufferedが有効な時にPaintイベントで取得するGraphicsオブジェクトに対して描画するのが一番、良さそうな結果となりました。

 

しかし、Paintイベント内で描画処理を行うには、描画する内容を変えたい時など、面倒なので、手動でダブルバッファによる描画方法を検討してみました。

 

手動のダブルバッファの方法については、このページ↓に分かりやすくまとまっています。

 

バッファリングされたグラフィックスを手動で描画する

http://msdn.microsoft.com/ja-jp/library/ka0yazs1%28v=vs.90%29.aspx

 

この手動のダブルバッファについて、前回と同様に描画速度を比較してみると、以下のようになりました。(BufferedGraphicsの部分が結果です。)

 

【描画速度の比較】

 

 

画像を描画する方法は、他のどの方法よりも高速に描画する事ができました。

 

【線の描画速度の比較】

 

線を描画する分には自動のDoubleBufferを使った方法をさほど変わらない結果となりました。

(処理時間にも多少ばらつきがあります。)

 

この画像描画、線の描画の両方を見ても、手動で行うダブルバッファの描画は効果的な用です。

 

参考までに、手動で行うダブルバッファの描画のサンプルプログラムを置いておきます。

 

BufferedGraphicsContext.zip  (Visual Studio C# 2008 Express)

 

C#へ戻る

【C#】Graphicsオブジェクトの違いによる描画速度の比較

C#に限らず.NETのプログラムでは絵や線などを描画するにはGraphicsオブジェクトに対して描画を行いますが、Graphicsオブジェクトの作成方法で描画速度や挙動が異なります。

 

Graphicsオブジェクトを取得するメソッドにはCreateGraphics、FromHwnd、FromImageと、コントロールのPaintイベントのPaintEventArgsクラスのGraphicsプロパティから取得する方法があります。

 

まずは、結果から。

評価は画像を描画する速度と、線を描画する速度とで比較しました。

 

【描画速度の比較】

こちらはフォームのクライアント領域のサイズ、および描画するGraphicsオブジェクトを変えながら、サイズ1024×1024の画像を2枚、交互に表示した場合の結果です。

 

(評価プログラムのイメージ)

 

(描画速度)

 

上記結果はフレームレートなので、値が大きいほど描画速度が速くなります。

 

これを見ると、CreateGraphicsを使った場合は、描画する領域が小さい場合は速くなりますが、DoubleBufferedの時が比較的速い結果となりました。

 

DoubleBufferedとはフォームのDoubleBufferedプロパティをtrueに設定し、PaintイベントのPaintEventArgsクラスから取得したGraphicsプロパティに描画した場合です。

 

FromImageはフォームのクライアント領域と同じBitmapオブジェクトを作成して、そのBitmapをフォームのBackgroundImageに指定し、このBitmapからFromImageメソッドでGraphicsオブジェクトを取得した場合です。

 

【線の描画速度の比較】

こちらも同様にフォームのクライアント領域のサイズ、および描画するGraphicsオブジェクトを変えながら、フォームのクライアント領域に1画素おきの縦、横の線を描画した時の結果です。

 

(評価プログラムのイメージ)

 

(描画速度)

 

上記結果は描画が完了するまでの時間なので、値が小さいほど描画速度が速くなります。

こちらもDubleBufferedが圧倒的に速い結果となりました。

 

【考察】

結果からするとフォームのDoubleBufferedプロパティをtrueにしてPaintイベントのPaintEventArgsクラスから取得したGraphicsプロパティに描画するのがベストのようです。
ただし、Paintイベント内で描画してもBackgroundImageがnullでない場合は、描画速度が遅くなるので注意して下さい。

ちなみに、今回はフォームに描画しましたが、PictureBoxではDoubleBufferedプロパティがありません。

しかし、PictureBoxでも試してみた限り、PictureBoxではDoubleBufferedプロパティがtrueの時と同じ動作をしてくれるようです。

 

画像を描画する場合、DrawImageメソッドで描画したあとにフォームのRefreshメソッドが必要なFromImageを使った描画が遅くなりました。

 

線を描画する場合は、線を一本一本描画する様子が見えるか?見えないか?で差が出ています。

FromaImageとDoubleBufferedの場合は一旦、メモリに描画してからフォーム上に表示されるので、高速な結果となりました。

逆にCreateGraphicsなどを使った線の描画はちょっと遅すぎ...

 

ただ、Paintイベントで画像や線を描画するのは、ちょっと面倒くさいかと思います。

そんな時に、ダブルバッファを手動で行う手法を別途まとめました。↓

手動ダブルバッファによる高速描画

 

C#へ戻る