Quantcast
Channel: c# - Cube Lilac
Browsing latest articles
Browse All 30 View Live

x64 Windows でのレジストリの扱い

嵌ったのでメモ.64bit OS が出現した事でレジストリの扱いが少し変化していたようです.例えば,以下のコードで得られる結果は,ビルド時の設定,実行環境によって異なってきます.Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE"); if (key ==...

View Article



PDF ファイルの解析

PDF ファイルを解析 (parse) する必要があったので,その触りだけ紹介(と言うか,必要な目的がこれだけで終わってしまった).PDF ファイルは,以下のような書式になっています.%PDF-1.X10obj<</Type/Catalog/Pages X 0 R >>endobj20obj<</CreationDate(D:20100417)/Title(PDF...

View Article

環境変数の状態を保存する EnvironmentSaver

一時的に環境変数の値を変更する必要が出たのですが,変更した環境変数の値を元に戻す作業が煩わしくなってきました(変更するキーが増えたときに戻し忘れたりするなど・・・).そんな訳で,環境変数のある時点における状態に自動的に戻してくれる EnvironmentSaver を作成してみました.発想は C++の boost::io_state_savers から.上記の...

View Article

Form の this.Activate() について

たまに Windowsフォームアプリケーションを書く機会があるのですが,この時にいつも悩むのが「起動時にウィンドウを前面に表示させる」方法でした.ぐぐってみると他のウィンドウからフォーカスを奪って前面に表示させるためには this.Activate()...

View Article

Image may be NSFW.
Clik here to view.

手のひらツールの実装

画像などが画面に入りきらずスクロールバーが表示されている場合に,マウスのドラッグでスクロールさせる機能(所謂,Adobe Readerなどの「手のひらツール」)を実装する必要があったので調べてみました.スクロールバーの表示手のひらツールの実装の前に,スクロールバーの表示のさせ方.画像などを表示させる場合には PictureBox クラス...

View Article


Image may be NSFW.
Clik here to view.

マウスホイールによるスクロール

Windowsフォームアプリを作成する場合,マウスホイールによる画面のスクロール機能は自力で実装する必要があるようです.実現する際には,メインフォームの MouseEnter と MouseWheel イベントにそれぞれ以下のようなイベントハンドラを指定します.using System; using System.Drawing; using System.Windows.Forms;...

View Article

Image may be NSFW.
Clik here to view.

連続ページを実現する

Adobe Readerなどのアプリケーションでよく見られる,全てのページを縦に並べてスクロールで移動する所謂「連続ページ」の実現方法を考えていたのでメモ.ListView などを使用してもよかったのですが,ScrollableControl の上に PictureBox...

View Article

Image may be NSFW.
Clik here to view.

カスタマイズ可能な TabControl

昨今はタブベースなアプリケーションへの需要が増しているので,何らかのデスクトップ・アプリケーションを作る際にもタブ化が課題となってきます.これが .NetFramework の場合,WPFを使用すれば問題とならないようなのですが System.Windows.Forms.TabControl を使用すると,背景色が透過にならず SystemColor.Control...

View Article


Image may be NSFW.
Clik here to view.

Managed code な dll を exe に結合する

カスタマイズ可能な TabControl - Life like a clownのようにカスタマイズされた GUIパーツを探す事があるのですが,こういった GUIパーツはソースコードではなく dll として提供されているものも結構ありました.GUIパーツのようなものは,exe を作成する時点で 1つに纏めてしまいたいなぁと思って探してみると,ILMerge...

View Article


Image may be NSFW.
Clik here to view.

.NetFramework 4 のみで 2.0 向けアプリケーションを動作させる

今年の 4月に Microsoftから .NetFramework 4 がリリースされましたが,.NetFramework 4 はこれまでの 2.0 〜 3.5 とは「別物」と認識されるようです.そのため,.NetFramework 4 しかインストールされていない環境で,.NetFramework 2.0...

View Article

Image may be NSFW.
Clik here to view.

Windows GUI wrapper for webpconv

JPEGより約40%コンパクト:Google、Web高速化を目指し新画像フォーマット「WebP」を発表 - ITmedia エンタープライズと,Googleが新しい画像フォーマットを発表したようで賑わっていました.A new image format for the Web  |  WebP  |  Google Developersを見たところ,各種画像ファイルから WebP...

View Article

サムネイル画像の生成と表示

今,所用で「サムネイル画像を一覧表示」する機能を作っています.取り合えず表示だけさせようと思ってシングルスレッドで走らせると(やはり)体感速度(スクロールすると引っかかりが生じるなど)に問題がありました.体感速度の改善に関しては,当初「取り合えず画像生成の部分を BackgroundWorker...

View Article

GUI プログラミング覚書

ここ最近,真面目に GUIを持つアプリケーションを書く機会が増えたので,現状までに気を付けないといけないなと感じたことをメモ.GUIアプリでまともに作ったものがまだ 2 つとかその程度なので,まだまだ足りない部分や勘違いも多そうですが気づいたらその都度修正すると言う事で.ちなみに,Visual Studio (.NetFramework) での経験を元に書くので VS (IDE)...

View Article


Image may be NSFW.
Clik here to view.

一つのソースファイルを複数のプロジェクトで共有する

Visual C#で開発していて,あるソースファイルを複数プロジェクトで共有したいと言うケースが出てきました.ただ,単にプロジェクトの「追加」→「既存の項目」から共有したいファイルを選択すると選択元のソースファイルのコピーができてしまうので,選択元を修正した場合などに問題となってきます.「これは素直に dll 作れと言う事なのかなー」と思っていたら...

View Article

Desktop と DesktopDirectory

System.Environment.SpecialFolder 列挙体には Desktop と DesktopDirectory と言う 2 つの値が定義されています.メンバ名説明Desktop物理的なファイル システム上の場所ではない論理的なデスクトップ。DesktopDirectoryデスクトップ上のファイル...

View Article


Win32 API の .NetFramework での宣言一覧

C#からでも Win32 APIを使う事がたびたびあるのですが,そのときに困るのが「どう宣言すればいいんだろう」と言うものでした.そこでいろいろとググっていたのですが,pinvoke.netと言うサイトが Win32 APIの .NetFramework での宣言をかなり網羅していました.例えば,FindFirstFile と言う Win32 APIだと以下のような感じになります.C#...

View Article

GUID を引数に取る Win32 API の宣言と使用方法

GUID 限定と言う訳ではないのですが.例えば,PowerEnumerateと言う関数は C では以下のような宣言になっています.DWORD WINAPI PowerEnumerate( __in_opt HKEY RootPowerKey, __in_opt const GUID *SchemeGuid, __in_opt const GUID...

View Article


GetPixel/SetPixel は遅い

所用で簡単な画像処理の実装を(お願い)しているのですが,何というか実行が非常に遅いのが気になりました.どうやら Bitmap クラスの GetPixel/SetPixel が原因のようで,これらのメソッドは非常に遅い事で有名なようです.void TranslateImage(Bitmap original) { for (int h = 0; h < original.Height; ++h)...

View Article

Hello, iTextSharp!

今まで適当に使っていたので,ここらでざっと概要を把握するためのまとめ.iTextSharp 自体のリファレンスは存在しない(?)ようなので,リファレンスとしては iText (Java) の APIリファレンスで代用するか有志の方が作成したヘルプファイルを眺めるかになるようです.iText Javadoc HomeiTextSharp クラスライブラリリファレンスの詳細情報 : Vector...

View Article

Windows における不正なパス名を変換する

Windowsにおける不正なパス名を変換する関数を少し真面目に書いてみます.現在の実装項目を簡単に列挙すると以下の通りです.「/*"|」の 6文字(Path.GetInvalidPathChars()...

View Article

Image may be NSFW.
Clik here to view.

PDFWiki - Wiki 記法で PDF を生成する

これは,C# Advent Calendar 2011参加記事です.現在,開催されている Advent Calendar の一覧は Advent Calendar 2011 (jp) 開催予定リスト - Life like a...

View Article


x64 設定中にデザイナで UserControl を表示しようとするとエラーになる

先日、Visual C# 2010 上で UserControl...

View Article


ReadOnly な参照型のメンバ変数

最近、プログラミング関係の事はほとんど書かないようになっていたのですが、ブログ継続の意味でも、差障りのない形でできるだけメモしていこうかと思います。さて、「ある参照型のメンバ変数を読み取り専用にしたい」と言う要求が出てきたのですが、ちょっとうまくいかなくて悩み中です。例えば、以下のような、あるデータを保持するためのクラスがあったとします。//...

View Article

Image may be NSFW.
Clik here to view.

ListView で表示用データを仮想化する

現在、プロジェクトの関係で初めて WPF を触っています。「GUI とデータ(および関連する処理)の分離と言う事にかなり気を使って設計されてるんだなぁ」と言う感動と「XAML の書き方がよく分からない!」と言う絶望が織り交じったファーストインプレッション。Binding...

View Article

ページ番号とインデックス

細かい話なんですが、どうインターフェースを定義しようか頭を悩ませてきたので、書きながら整理。何らかのファイルの「複数のページ情報を管理」するためのクラスを書いています。内部では何らかのコレクションクラスで管理する事になるのですが、管理している単一ページ、または複数ページの情報へのアクセス方法を提供する際に、ユーザには「ページ番号」で指定させるのか「インデックス」で指定させるのかと言う事で悩み始めまし...

View Article


Image may be NSFW.
Clik here to view.

Microsoft Ribbon のグラデーション効果を削除する

現在、Microsoft Ribbon for WPFを使用したアプリケーションを作成しているのですが、デザインを詰める段階になって、なかなかしんどい事態に遭遇しました(参考:残念なMS Ribbonについて - DICOM Viewer 開発記)。例えば、Ribbon の背景色をデフォルト色から黒っぽい色 (#333333)...

View Article

Image may be NSFW.
Clik here to view.

Windows アプリ開発で利用している Web サービス

近年は GitHubを始めとした Version Control Systems (VCS) のホスティングサービスと連携する形で、プログラミングやソフトウェア開発に関する様々な Web サービスが提供されています。私は専ら Windowsのデスクトップ・アプリケーションを開発していますが、この領域においても便利な Web サービスが数多く登場してきました。そこで、この記事では、私が...

View Article

Ghostscript を C# から利用するためのライブラリ

先日、7-Zip ライブラリとしての CubeICE と言う記事を公開しましたが、ライブラリ化の試みは CubePDF シリーズでも行っています。CubePDF シリーズは Cube.Pdfと言うリポジトリで管理しており、ライブラリ部分は Librariesに、最終的なアプリケーション部分は Applicationsに配置しています。この記事では、CubePDF ライブラリの内...

View Article

Image may be NSFW.
Clik here to view.

Visual Studio 2019 と新 csproj への移行

2019 年 4 月 2 日、Visual Studio 2019が正式版としてリリース (GA: General Available) されました。この記事では、 Visual Studio 2019 に関連する内容として、C# の新しいプロジェクト形式 (csproj) への移行について記載します。新 csproj 自体は Visual Studio 2017...

View Article



DateTime.MinValue や new DateTime() は危険

昨日、コロナ接触確認アプリ COCOA が、バージョンアップで起動不能になると言う現象が確認されたらしく、この問題の検証が GitHub 上で行われていました(COCOA v1.4.0 が起動しない - Issue #517 - cocoa-mhlw/cocoa)。この Issue によると、原因は .NET の DateTime...

View Article
Browsing latest articles
Browse All 30 View Live




Latest Images