C#
VSでTools -> Nuget Package Manager -> Nuget Package Console Install-Package MathNet.Numerics -Version 4.15.0www.nuget.org using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; u…
さて、前回MFCでWM_TOUCHとGetTouchInputInfoを使ってタッチパネルの情報を取得したのだが、MFCよりはC#で書いた方が、あとでいろいろといじりやすい。 今回は、必要なAPIをインポートしてC#で同様の実装をしてみる。 Visual StudioでC#のフォームのスケルト…
さてJPEG、知っている方には言わずもがな、圧縮率と画質の間にトレードオフがある。 ちょっと気の利いた画像加工ソフトや、デジタル一眼のRAW現像ソフトなどでは、JPEG保存を指定するときに画質の指定ができる。 これが.net FrameworkのBitmapクラスでも実装…
C#のBitmapクラスはとてもよくできている。 なんでも「バチこい!」で取り込んでくれるわ、好きなように切り貼りできるわ、でもって好きなフォーマットで保存できる. Bitmap bmpFromFile = new Bitmap(strSrcFilename); bmpFromFile.Save(strDistFilename, S…
Formに画像を表示する方法はいろいろあるのだが、一番簡単なのはFormの背景(Backgroundimage)にしてしまうことだ。 Form appを作る Visual Studioを開き、New Projectを作る、名前は"DLLTestForm" Formにドラッグ&ドロップを出来るようにする Form1を開き、…
Form appを作る Visual Studioを開き、New Projectを作る、ダイアログで"Visual C#" -> "Windows Form Applicattion"を選択し、名前は"DLLTestForm" MFC DLLプロジェクトをソリューションに追加する Solution Explorerで"Solution 'DLLTesForm'"を右クリック…
Tools -> Options -> Environment -> General -> Color Theme 背景が暗いほうが昔のグリーンディスプレイぽくってよいので、筆者は"Dark"がお気に入り。
これについての考察。 C#では構造体は値渡しである。 しかし、この例では配列を設定している。 これは参照渡し、もしくはポインタ渡しでないとできないはずだ。 と思い、知られべて見たらこちら。 http://smdn.jp/programming/netfx/struct/3_arrayfields/ …
マウスの座標を取得する(グローバルな座標) System.Windows.Forms.Cursor.Positionフォーム内の座標が取りたい場合には、 System.Drawing.Point pointMouse = this.PointToClient(System.Windows.Forms.Cursor.Position); フォームの座標 this.Locationこれ…
お仕事でCのプロジェクトの構造体をC#で使いまわす必要があったのでメモ。 いくつかの違い。 インスタントするのにコンストラクタが必要、Cのように配列でインスタントはできない 構造体メンバに配列がある場合には、その配列をインスタントすることも必要、…
さすがにシリアルコンソールに数字が表示されるだけでは寂しいので、ちょっと改造をした。 Arduino側をまずバイナリーで出力するようにする。 void loop() { for(count = 0; count { SensorOutputADC[ count ] = analogRead( inputAnalogPin[ count ] ); byt…
C#で参照渡しをしたいときにはキーワードrefをつける。 void aho() { int hoge; boke(ref hoge); } void boke(ref int hogehoge) { hogehoge += hogehoge; }ただし 構造体は値型なので、refをつけないと値渡しとなる(この例、intやdouble、structやenumもそ…
今日はC#ですっどれを使う練習。 すっどれと言っても、2chのあれではない(このネタは前にもやったが)。 1つのプログラムで、あたかも複数のプロセスが同時・並列処理されるように見える、あれだ。 最近の高度なフレームワーク(.netやJVMなど)では、いちいち…
頼まれ趣味プロで、シリアルポートの制御Appを作ることになった。 以前MFCで書いたときには、各IOピンを直接たたく必要があったため、Windows2000以降で直接I/Oにアクセスすることができないの壁にぶつかったりと、なかなか苦労した。 今回はただのシリアル…
ある趣味プロでC#のdelegateを初めてまともに使うことになったので、メモ。 誤解を恐れずにいえば、C#におけるdelegateは、非同期通信を利用するためのものだ。 例えば、ワーカースレッドから親スレッドのメソッドを呼び出したい場合や、複数のイベントハン…
Form formMessage = new Form(); formMessage.Show();表示したダイアログを消すのには、 formMessage.Close()
Formのプロパティの"ControlBox"をFalseにする。 こうすると、最大化・最小化ボタン、アイコン化ボタン、クローズボタンが表示されなくなる。 MessageDialogとしてフォームを使う時に便利。
TextureBrush texturebrushBMPTiling = new TextureBrush(bmpImageFromResource); gfxOffscreen.FillRectangle(texturebrushBMPTiling, 0, 0, ClientRectangle.Width, ClientRectangle.Height);
お次は、オフスクリーン描画である。 Form上に画像を描く場合、Paintイベントハンドラを実装する。 private void onFormAhoPaint(object sender, PaintEventArgs e) { e.Graphics.(適当に画像を描くメソッド); }ただ、このままだと表示メモリに直接描くこと…
以前作ったテストパターン表示ソフトの最適化、リファクタリングを始めた。 最初に作ったときには、時間優先で幾何学的な表示パターンを全てその場で計算して描いていたのだが、これだと描画に時間が掛かる。 周期的なパターンについては、事前にリソースと…
Solution Explorerで、現在のプロジェクトを右クリックして"Properties" -> Icon and manifestで"Icon"のファイルを指定、bmpなどから作成したい場合には@icon変換などがお勧め。
こちらはまだ新年ではないので、新年そうそうやっているわけではない、暮れの押し詰まった日にやっているのだ。 で、何をやっているのかといえばこれとかこれなどのwebマンガのビュワーを作っているのだ。 PictureBoxを画面の中心に、フォームのサイズ変更に…
今回の課題は非圧縮のAVIファイルとのBitmapファイルのやり取りだ。 AForge.NETを利用する、http://www.aforgenet.com/、このブログを書いている時点で最新バージョンは2.2.5である。 準備 上記のサイトの"download"からzipファイルをダウンロード 適当なフ…
過去に作ったDLLが、C#でエラーが発生して使用できないとお悩みの(筆者と同じ)貴兄に、もしDLLの宣言が int WINAPI DLL_Foo(...)となっている場合には、C#でimportする際に [DllImport("(DLLファイル名).dll", CallingConvention = CallingConvention.Winapi…
buttonAho.Location = new Point(ClientSize.Width * 3 / 4, 0); buttonAho.Width = ClientSize.Width / 4;これをFormのLoadとSizeChangedのイベントハンドラに実装すれば吉。 LoadはFormをダブルクリックすると挿入されるよぅん。 (追記 on 20140303)SizeCh…
今回のプロジェクトでは、まずC#で実装したフォームを利用して、過去の資産のDLLを使用することにした。 復習:DLLの作り方 Visual StudioでMFC DLLプロジェクトを新しく作成する 実装クラス(大概"プロジェクト名.cpp"になっているはず)に以下のようなエント…
先週末から新しいプロジェクトとして「(半分仕事)MFC: 画像処理フレームワーク、画像処理部をDLL化(外部公開可能にする)、解析用の2D-FFTとPSNR、MFC6からのポーティング」を始めたのだが、いろいろあって処理部をMFC DLL(C++)、UIはC#で書くことになった。 …
foreachはC++にはない(おっと最近追加になったらしい)制御構文である。 forにも似ているのだが、ループカウンターを用意する必要がない。 こんな感じである。 int[] testArray = { 0, 1, 2, 3, 4 }; foreach (int output in testArray) { MessageBox.Show(st…
Microsoft.Win32.RegistryKey regkeyHogehoge = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(stringHogehoge, false); string[] stringHogehogeSubKeyNames = regkeyEnumDisplay.GetSubKeyNames(); var SubKey0 = regkeyHogehoge.GetValue(string str…
ComboBox ComboBoxを編集不可能にするのには"DropDownStyle"プロパティを"DropDownList"にする 選択の変更は"SelectedIndexChanged"のイベントハンドラに実装する ドロップダウンリストにアイテムを追加するためにはItem.Addメソッドを使用する 初期値などア…