AFsoft World

AF日記。 コンピュータ・CAD・漫画・アニメ・ゲーム・スポーツ等についてのたわいもない話、などなど。

OpenSourceSpace

[OSS] GDI+落書きテスト4

OpenSourceSpace(OSS)のほうに、

GDI+落書きテスト4
ZIP/334KB

をアップしました。

前回の続きです。GdiPlus.dll は同梱していません。
メタファイル(WMF)、拡張メタファイル(EMF) での保存は、GDI+サンプルの手法だとこのプログラムではうまく行かないので、従来の手法をいれて作りました。Windows98/2000/Xpで動作確認しています。これだけでは何なので、線種設定(ペンスタイルの設定)もできるようにしてみました。

[OSS] GDI+落書きテスト3

OpenSourceSpace(OSS)のほうに、

GDI+落書きテスト3
ZIP/329KB

をアップしました。

前回の続きで、設定をデータファイルで残すようにしたことと、ファイルメニュー:新規、開く、保存、画像として保存、終了 を追加したこと、です。GdiPlus.dll は同梱していません。
画像として保存、とありますが、emfファイル(拡張メタファイル)での保存は、Windows98だとなぜかファイル保存できません。2000/Xpでは出来るのですが。謎です。ちょっと調査に時間がかかるかも。また、2000/Xpでも、余白がついたり切れたりと、画面の大きさのコントロールがよく分かりません。サンプルプログラムにもそういうのは書かれていませんでしたので謎です。扱いにくければ、この機能は外すかも。

[OSS] GDI+落書きテスト2

OpenSourceSpace(OSS)のほうに、

GDI+落書きテスト2
ZIP/1245KB

をアップしました。

GDI+ の簡単なテストプログラムです。
ただの いい加減なテストプログラムで
これまた実用性は全くありません。
Delphi 6 で作っています。前回同様、GdiPlus.dll を同梱しています。これは、前回のWindowsUpdateで内部バージョンが変わったらしい為です。Windows98〜で動作します。ソースをコンパイルするには、前回同様、GdiPlus API を入れておく必要があります。

落書きテスト1では、TImage に描画させていましたが、これをやめ、TPaintBox に描画させるようにしました。そのため、Form1 の OnPaint に再描画させるコードを入れています。再描画させるため、ペン設定や線のデータを登録するようにしてそれを全データ表示を行うようにしています。右クリックでポップアップメニューを表示し、ペン設定、ペン幅設定を行うようにしています。それ以外は基本的に、落書きテスト1と同じです。

[OSS] GDI+落書きテスト1

OpenSourceSpace(OSS)のほうに、

GDI+落書きテスト1
ZIP/1238KB

をアップしました。

GDI+ の簡単なテストプログラムです。
ただの いい加減なテストプログラムで
これまた実用性は全くありません。
Delphi 6 で作っています。前回のマルチTIFF同様、GdiPlus.dll を同梱しています。Windows98〜で動作します。ソースをコンパイルするには、前回のマルチTIFF同様に、GdiPlus API を入れておく必要があります。

GDI+を触っていると、GDI しか使っていない頃と比べると、色々な描画が出来て面白いですね。ペン設定は画面上で右クリックすると出来るようにしてます。

普通の色ペン(ソリッドペン)
これは GDI と同じ
20110409e
だけど、Delphi で普通に線幅指定して描画すると線端は丸くなりますが、GDI+の場合はデフォルトでフラット状態となります。ここではしていませんが、プログラミングで線端を丸く指定することはできます。

次に、アルファ値を指定した透過ペン
20110409f
アルファ値は 0〜255 を指定することが出来て、255の場合に透過しない、という状態になります。

次に、ハッチングペン
20110409g
ハッチングの種類は、0〜52 を指定することが出来ます。GDIでもブラシスタイルで塗り潰しをする事は出来ますが、ペンとして こういう事が簡単に出来るという事や、ハッチングの種類が多いというのも面白いですね。

次に、画像ペン(テクスチャペン)
20110409h
画像ファイルは、.ICO、.WMF、.EMF、.BMP、.GIF、.PNG、.JPG、.TIF が使えます。縦横サイズは小さいほうがいいでしょうね。

次に、グラデーションペン
20110409i
グラデーションの始点・終点の指定がちょっと注意ですが(始点・終点の外側と判断される部分の描画は 思ったようにいかないケースがあるので:線端をフラットにしているのもこのため) これも普通の GDI描画ではなかなか難しいと思いますが、GDI+では簡単に出来てしまえるのが面白いです。

Direct2D でも同様なことが出来ますし、おそらくは GDI+よりも速いと思いますが、Windows95〜Xpでは動作しないという事と、印刷に使えない様子、というのがありますので、Direct2D や GDI よりも GDI+は全般的に遅いと思いますが、色々な効果を利用したい場合には結構使えるんじゃないかと思います。

ここでは 線分のペンとして しか出来てませんが、円・楕円なども勿論描画出来ますし、ブラシとして使って図形を塗り潰す際に、グラデーションとか画像とかハッチングとか透過とか、という事もできます。グラデーションは、線形グラデーションだけでなく、パス指定でのグラデーションも出来ます。例えば、楕円状に塗り潰し、という事も出来るという事です。

マルチTIFFを作る

OpenSourceSpace
簡単なDelphi6+GDI+サンプルプログラム
「マルチTIFFを作る」をアップしました。

mtiff.zip /1190KB

中に GdiPlus.DLL が入ってますが、WindowsXp以降ではシステムフォルダの中にありますので、ここのものは消しても大丈夫です。Windows98/Me/2000 の場合は、無いと動きません。Windows95では動作しません。多分 NT4.0もダメだと思います。

なぜか、256色のPNG形式ファイルは受け付けてくれません。内部で BMPに変換してみたのですがそれでもダメなので諦めました。(これで3時間損した…)

[OSS] お絵描きテスト

OpenSourceSpace(OSS)のほうに、
お絵描きテストプログラムをアップしました。

Direct2D の簡単なテストプログラムです。
ただの いい加減なテストプログラムで
実用性は全くありません。
Delphi 2010 + Direct2D でのプログラミングに興味のない方はダウンロードしても全く意味がありませんし、Direct2Dに詳しい方にも全く意味が無いです。かなり前に作り出そうとして、放置状態にしていたのを、そのままにしていても仕方が無いので 取りあえずアップしたというだけのものです。

Direct2D ですので、Windows9x/Me/2000/Xp では動作しません。
Windows Vista/2008 Serverの場合は、SP2 にしたあと、Windows Updateにて 「プラットフォーム更新プログラム」 を適用する必要があります。
http://support.microsoft.com/kb/971644/ja

以前の記事
http://blog.livedoor.jp/afsoft/archives/51738797.html

まぁ、そこまでして試すプログラムじゃないです。
スルーして下さい。

このプログラムを作っていて、お、と思ったのは
ジェスチャマネージャをコントロールに割り当てると、マウスホイールのイベントで マルチタッチの拡大縮小が割り当ててくれるという点。なので簡易画像ビューワでやったような処理をしなくてもいい、って辺りかな。

[OSS] DWGをJWWで開く

OpenSourceSpace
簡単なDelphi2010サンプルプログラム
「DWGをJWWで開く」をアップしました。

dwgopen.zip 455KB

・Jw_cad をインストールしておきます
 http://www.jwcad.net/
 http://jwwfaq.undo.jp/down/(旧バージョン)
・Open Design Alliance(ODA;旧OpenDWG)の
 Teigha File Converterをインストールしておきます
 http://www.opendesign.com/guestfiles

双方とも正常起動することを確認しておいて下さい。

本ツールを起動して、Jw_cadのフルパス名・Teigha File Converterのフルパス名を指定し、開きたいDWGファイルを指定して、[DWGを開く!]ボタンをおもむろにクリック。Teigha File Converterを起動して DWGをDXFに変換し、出来上がったDXFを Jw_cad で開きます。

DWGファイルを本ツールに関連付けして、ダブルクリックすれば、変換して Jw_cad で見る事が出来ます(設定は予め行って下さい)。ただ、本ツールは終了せずそのまま残ってますのでご注意を。
20110206a


※なお、DWG→DXF、DXF→JWW はそれぞれのソフトでの変換処理に依存しますので、うまく開けるかどうかは、私は一切保証しませんし責任も負えませんので予めご了承のほどを。(DWGファイルを正確に開きたい場合は、Autodesk AutoCAD、或いは、Autodesk DWG TrueViewを御利用下さい)

[OSS] JWF選択起動

OpenSourceSpace
指定したJWFファイルをJw_win.jwfとしてコピーして
Jw_cadを起動する
簡単なDelphi2010サンプルプログラム
「JWF選択起動」をアップしました。

JWFsel.zip 1109KB

※Jw_cadフォルダ内にある「Jw_win.jwf」を上書きコピーしますので、既に作成されている「Jw_win.jwf」は必ずバックアップ等と行っておいて下さい。

[OSS] 簡易画像ビューワ

OpenSourceSpace
簡単なDelphi2010サンプルプログラム「簡易画像ビューワ」をアップしました。
imageview.zip (1185KB)

Delphi2010標準状態で開く事が出来る画像ファイルを開いて表示するだけのビューワ・プログラムです。扱える画像の種類は、BMP、ICO、WMF、EMF、GIF、JPEG、PNG、TIFF です。画像を表示させて、左クリックで拡大・右クリックで縮小が出来ます。マウスホイールでの拡大縮小も出来ます。Windows7のマルチタッチのズームにも対応させているつもりですが感覚的に納得できるものかどうかは保証しません。
※画像の圧縮形式によっては表示出来ないかもしれません。
※TIFFが利用できるのは、Windows XP SP3 以上の OS で、DirectX ランタイムを使用している場合だけです。

画像サイズは、最小4×4ドット〜最大80,000×80,000ドットとして考えていますが、Windows9xでは最大2000×2000ドット程度までですし、Windows2000/Xpの場合はそれより大きく出来ますが,80,000までは不可かもしれません。


--

マルチタッチのパンは、どうもこちらの環境ではうまく認識してくれない事が多いので、対応させていません。回転は必要無いと思うので対応させていません。Delphi2010のTScrollBoxが初期状態でパンの認識が出来るようになっていて、スクロールバー辺りから画像をタッチしたままドラッグするようにすると、画面移動できるようです(慣性も効いてるようです)。ただし、画像が粗く?ゴミが出る?みたいな事もあるようですが。

あと、Delphi7では、[Samples]内に TShellTreeView とかがありましたが、Delphi2010標準状態では無いようです。どこかにあるのかもしれませんが、よく分かりません。ちょっと残念。

[OSS] めもカレmemocale.zip (497KB)

OpenSourceSpace
簡単なDelphi2010サンプルプログラム「めもカレ」をアップしました。
memocale.zip (497KB)

たわいもない、メモ付きカレンダーです。

プログラムと同じフォルダ内に、画面位置を保持する設定ファイル(.dat)と、メモの文書ファイル(.rtf)を作成します。
※メモ欄で「◆◇【」という文字を追加しないで下さい 日付行と勘違いしてしまいます
※一度追加した日付行は、メモ内容を削除をしても、文章データとしては残ります
※文書データ内での日付での並べ替えは行いません
※文書データはリッチテキストファイル(RTF)ですので、ワードパッド等で修正可能です

[OSS] フォント確認 chkfont.zip (711KB)

OpenSourceSpace
簡単なDelphi2010サンプルプログラム「フォント確認」をアップしました。
chkfont.zip 711KB

PCにインストールしているフォント名一覧を表示する、というものです。
そのフォントがどのような文字表示を行うのかを確認出来ます。

[確認(1)]は、Screen.Font の内容を読みます。
Printer.Font のほうはコメントにしてます。
印刷目的のプログラムを作成する場合は、Printer.Font の方がいいと思います。
[確認(2)]は、WindowsAPI を使ってフォント名一覧を取得する方法です。
Recent Comments