閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

Library

DrawLines でのパフォーマンス低下

理由が良く解らないのだけれど、アンチエイリアスを有効にして (Graphics.SetSmoothingMode(SmoothingModeHighQuality)) 、 X 座標がソートされていない (でたらめに入っている) ポイントの配列を DrawLines に突っ込むと描画処理が異様に遅くなることがある…

Gdiplus::Matrix -> SetWorldTransform API

回転した矩形を描くのに、 Polyline だといまいち綺麗に線が出ません。仕方が無いので API を使うことにしました。 g.GetTransform(&mx); HDC hDC = g.GetHDC(); float elems[6]; mx.GetElements(elems); ::SetGraphicsMode(hDC, GM_ADVANCED); ::SetWorldTr…

GDI+ を使って座標変換

Graphics g(hDC/*どこかからやってきた DC*/); Matrix mx; mx.RotateAt(45, center_point); g.SetTransform(&mx); HDC hDC = g.GetHDC(); Rectangle(hDC, rect); g.ReleaseHDC(hDC); 世の中そんなに甘くないようで、上記のようなコードを書いても回転した矩…

GDI+ のペンには XOR がない

GDI+ では、ペンを XOR にして図形を描く事が出来ないらしい。これは結構致命的。どうしてもやりたい場合は Graphics.GetHDC メソッドにてデバイスコンテキストのハンドルを貰ってきて、それを使って GDI にて描画する必要があるらしい。なんて面倒な。ちな…

引数の意味が変わっている

Win32API の Rectangle 関数は第 4 引数に描画したい矩形の右下の X 座標を、第 5 引数には右下の Y 座標を指定します。が、 GDI+ の Graphics::DrawRectangle メソッドは第 3 引数には矩形の幅、第 4 引数には高さを指定するようになっています。なんか妙に…

やっぱり DrawLines 遅い

同じ点数*1で Polyline(Win32API) と Graphics::DrawLines (GDI+) とで線を描いてみたけれど、後者が圧倒的に遅い。 3 秒くらいかかってしまう。これはまずいなあ。なんとかならないかな。 追記 描画対象を TImage から TPaintBox に変更したらそこそこ早く…

GDI+

普通に GDI を使うより色々な処理が随分楽にできるようになっている GDI+ ですが、かえって使いにくくなっている部分もあるようで。Win32API の Rectangle 関数は、デバイスコンテキストに関連付けられているペンで矩形の枠を描き、またブラシがあればそのブ…

XP テーマを操作

Windows XP でスタイルを XP Style にした時に GetSysColor API でタイトルバーの色が取れなくて *1 色々調べていたのですが、 XP Style にすると色々なところが画像になるんですね。 GetSysColor で得られる色は合っているのだけれど、その色で描かずに画像…

Graphics.DrawLines

GDI+ の Graphics.DrawLines って遅くないですか?1 万点超えるとかなりパフォーマンスが悪くなってくるような。 10 万点程度でしばらく戻ってこなくなります。ご指定のページが見つかりません には 100 万点あっても 1,2 秒で描けるよ! とか描いてありますが…

GDI+ を Borland C++ Builder (というか BCC) で使用する

図形を綺麗に描画したいということで、色々調べ物。現在は単純に GDI に WindowsAPI を使って線分やら矩形やらを描いているのですが、あまり綺麗ではないと言うことで、何か代替になるものがないか、と。順当に行けば GDI+ なのかなと思って調べてみたところ…

NPlot

.NET Framework で使えるグラフ描画ライブラリ。データをセットするだけで簡単にプロットが描ける上、凡例なども出せるようです。自分でグラフを描くのが面倒なので導入してみましたが、これはなかなか便利です。軸とか作るの、仕事ではやってるけど家で暇潰…

IP Helper Functions

PC に刺さっている LAN カードの MAC アドレスとか、そのへんの情報が必要になったので、検索してみたところ IP Helper Functions というものがあるらしい。 MSDN Library MSDN のドキュメントはまだ英語版しかないようだけれど、リファレンスくらいなら英語…

tree.hh

tree.hh: an STL-like C++ tree class 木構造を表現するためのライブラリ。 STL ライク。なんとなく、仕事で使えるかなあと一瞬思ったけれど、 GPL だから出番があっても使えないなあ。 boost にあればいいのに。

log4cxx を bcc で使えるようにしてみた

昨日のエントリに思い切り嘘を書いてしまいました。log4cxx の msvc 用のプロジェクトは、 DLL プロジェクトになっていました。会社に来てから思い出しましたが、なぜか Unicode 版のプロジェクトしかコンパイルできず、それを bcc から呼び出したらメッセー…

log4cpp に TelnetAppender できないかなあ

RemoteSyslogAppender がログをソケットで送信してくれるようなので挑戦しているのですが、これはどうもサーバを用意しないといけないようで面倒くさい。というか、わざわざサーバ自分で書いて試しているのですが、なぜかデータが受信できずにいます。原因も…

VCL の TCustomGrid.KeyDown の実装

VCL カテゴリを作ろうかと思ったけれどたぶん続かないし、きっと面白みも無いのでやめておきます。ちょっと苦労した話。説明を一切省いているため VCL を知らない方には面白く無いと思います。TStringGrid *1を使って、固定セルに対しての選択や編集を可能に…

log4cpp

以前 log4cxx をビルドだけして放置してしまっていたので、久しぶりに触ってみようと思ったのですが、コンパイルが通らなくなっていたり、 bcc からでは思うように動かすことができなかったりで悲しくなったので log4cpp に鞍替えしてみることにしました。他…