C#
昨日、コロナ接触確認アプリ COCOA が、バージョンアップで起動不能になる と言う現象が確認されたらしく、この問題の検証が GitHub 上で行われていました(COCOA v1.4.0 が起動しない - Issue #517 - cocoa-mhlw/cocoa)。この Issue によると、原因は .NET…
2019 年 4 月 2 日、Visual Studio 2019 が正式版としてリリース (GA: General Available) されました。この記事では、 Visual Studio 2019 に関連する内容として、C# の新しいプロジェクト形式 (csproj) への移行について記載します。新 csproj 自体は Visu…
先日、7-Zip ライブラリとしての CubeICE と言う記事を公開しましたが、ライブラリ化の試みは CubePDF シリーズでも行っています。CubePDF シリーズは Cube.Pdf と言うリポジトリで管理しており、ライブラリ部分は Libraries に、最終的なアプリケーション部…
近年は GitHub を始めとした Version Control Systems (VCS) のホスティングサービスと連携する形で、プログラミングやソフトウェア開発に関する様々な Web サービスが提供されています。私は専ら Windows のデスクトップ・アプリケーションを開発しています…
現在、Microsoft Ribbon for WPF を使用したアプリケーションを作成しているのですが、デザインを詰める段階になって、なかなかしんどい事態に遭遇しました(参考:残念なMS Ribbonについて - DICOM Viewer 開発記)。例えば、Ribbon の背景色をデフォルト色…
細かい話なんですが、どうインターフェースを定義しようか頭を悩ませてきたので、書きながら整理。何らかのファイルの「複数のページ情報を管理」するためのクラスを書いています。内部では何らかのコレクションクラスで管理する事になるのですが、管理して…
現在、プロジェクトの関係で初めて WPF を触っています。「GUI とデータ(および関連する処理)の分離と言う事にかなり気を使って設計されてるんだなぁ」と言う感動と「XAML の書き方がよく分からない!」と言う絶望が織り交じったファーストインプレッショ…
最近、プログラミング関係の事はほとんど書かないようになっていたのですが、ブログ継続の意味でも、差障りのない形でできるだけメモしていこうかと思います。さて、「ある参照型のメンバ変数を読み取り専用にしたい」と言う要求が出てきたのですが、ちょっ…
先日、Visual C# 2010 上で UserControl を継承したコンポーネントをデザイナ経由で貼り付けていたら、「ビルドは成功するんだけど、デザイナ上で表示しようとするとエラーになる」と言う状況に遭遇しました。適当にググっていたら「作成したコンポーネント…
これは,C# Advent Calendar 2011 参加記事です.現在,開催されている Advent Calendar の一覧は Advent Calendar 2011 (jp) 開催予定リスト - Life like a clown を参照下さい.iTextSharp の勉強がてら,ちょっとしたアプリケーションを作ってみようと思…
Windows における不正なパス名を変換する関数を少し真面目に書いてみます.現在の実装項目を簡単に列挙すると以下の通りです. 「/*"<>|」の 6文字(Path.GetInvalidPathChars() メソッドで返される文字に「*」記号を加えたものに相当?)は無条件で置換して…
今まで適当に使っていたので,ここらでざっと概要を把握するためのまとめ.iTextSharp 自体のリファレンスは存在しない(?)ようなので,リファレンスとしては iText (Java) の API リファレンスで代用するか有志の方が作成したヘルプファイルを眺めるかに…
所用で簡単な画像処理の実装を(お願い)しているのですが,何というか実行が非常に遅いのが気になりました.どうやら Bitmap クラス の GetPixel/SetPixel が原因のようで,これらのメソッドは非常に遅い事で有名なようです. void TranslateImage(Bitmap o…
GUID 限定と言う訳ではないのですが.例えば,PowerEnumerate と言う関数は C では以下のような宣言になっています. DWORD WINAPI PowerEnumerate( __in_opt HKEY RootPowerKey, __in_opt const GUID *SchemeGuid, __in_opt const GUID *SubGroupOfPowerSet…
C# からでも Win32 API を使う事がたびたびあるのですが,そのときに困るのが「どう宣言すればいいんだろう」と言うものでした.そこでいろいろとググっていたのですが,pinvoke.net と言うサイトが Win32 API の .NetFramework での宣言をかなり網羅してい…
System.Environment.SpecialFolder 列挙体には Desktop と DesktopDirectory と言う 2 つの値が定義されています. メンバ名 説明 Desktop 物理的なファイル システム上の場所ではない論理的なデスクトップ。 DesktopDirectory デスクトップ上のファイル オ…
Visual C# で開発していて,あるソースファイルを複数プロジェクトで共有したいと言うケースが出てきました.ただ,単にプロジェクトの「追加」→「既存の項目」から共有したいファイルを選択すると選択元のソースファイルのコピーができてしまうので,選択元…
ここ最近,真面目に GUI を持つアプリケーションを書く機会が増えたので,現状までに気を付けないといけないなと感じたことをメモ.GUI アプリでまともに作ったものがまだ 2 つとかその程度なので,まだまだ足りない部分や勘違いも多そうですが気づいたらそ…
今,所用で「サムネイル画像を一覧表示」する機能を作っています.取り合えず表示だけさせようと思ってシングルスレッドで走らせると(やはり)体感速度(スクロールすると引っかかりが生じるなど)に問題がありました.体感速度の改善に関しては,当初「取…
JPEGより約40%コンパクト:Google、Web高速化を目指し新画像フォーマット「WebP」を発表 - ITmedia エンタープライズ と,Google が新しい画像フォーマットを発表したようで賑わっていました.A new image format for the Web | WebP | Google Developers …
今年の 4月に Microsoft から .NetFramework 4 がリリースされましたが,.NetFramework 4 はこれまでの 2.0 〜 3.5 とは「別物」と認識されるようです.そのため,.NetFramework 4 しかインストールされていない環境で,.NetFramework 2.0 向けにビルドされ…
カスタマイズ可能な TabControl - Life like a clown のようにカスタマイズされた GUI パーツを探す事があるのですが,こういった GUI パーツはソースコードではなく dll として提供されているものも結構ありました.GUI パーツのようなものは,exe を作成す…
昨今はタブベースなアプリケーションへの需要が増しているので,何らかのデスクトップ・アプリケーションを作る際にもタブ化が課題となってきます.これが .NetFramework の場合,WPF を使用すれば問題とならないようなのですが System.Windows.Forms.TabCon…
Adobe Reader などのアプリケーションでよく見られる,全てのページを縦に並べてスクロールで移動する所謂「連続ページ」の実現方法を考えていたのでメモ.ListView などを使用してもよかったのですが,ScrollableControl の上に PictureBox を載せると言う…
Windows フォームアプリを作成する場合,マウスホイールによる画面のスクロール機能は自力で実装する必要があるようです.実現する際には,メインフォームの MouseEnter と MouseWheel イベントにそれぞれ以下のようなイベントハンドラを指定します. using …
画像などが画面に入りきらずスクロールバーが表示されている場合に,マウスのドラッグでスクロールさせる機能(所謂,Adobe Reader などの「手のひらツール」)を実装する必要があったので調べてみました. スクロールバーの表示 手のひらツールの実装の前に…
たまに Windows フォームアプリケーションを書く機会があるのですが,この時にいつも悩むのが「起動時にウィンドウを前面に表示させる」方法でした.ぐぐってみると他のウィンドウからフォーカスを奪って前面に表示させるためには this.Activate() を使えば…
一時的に環境変数の値を変更する必要が出たのですが,変更した環境変数の値を元に戻す作業が煩わしくなってきました(変更するキーが増えたときに戻し忘れたりするなど・・・).そんな訳で,環境変数のある時点における状態に自動的に戻してくれる Environm…
PDF ファイルを解析 (parse) する必要があったので,その触りだけ紹介(と言うか,必要な目的がこれだけで終わってしまった).PDF ファイルは,以下のような書式になっています. %PDF-1.X 1 0 obj << /Type /Catalog /Pages X 0 R >> endobj 2 0 obj << /C…
嵌ったのでメモ.64bit OS が出現した事でレジストリの扱いが少し変化していたようです.例えば,以下のコードで得られる結果は,ビルド時の設定,実行環境によって異なってきます. Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachi…