iPhone/iPad用ドット絵エディタ「EDGE touch」

最近のエントリー

GradientFill APIのラッパー関数を作ってみました。
と言っても縦のグラデしか対応させていませんが。

void FillGrad(CDC* pDC, CRect rc, COLORREF colBegin, COLORREF colEnd)
{
	TRIVERTEX av[2] = {
		rc.left, rc.top, GetRValue(colBegin) << 8, GetGValue(colBegin) << 8, GetBValue(colBegin) << 8, 0xff00,
		rc.right, rc.bottom, GetRValue(colEnd) << 8, GetGValue(colEnd) << 8, GetBValue(colEnd) << 8, 0xff00,
	};
	GRADIENT_RECT gr = {0, 1};
	GradientFill(pDC->GetSafeHdc(), av, 2, &gr, 1, GRADIENT_FILL_RECT_V);
}

GradientFill APIは古いOSでは動きませんのでご注意ください。

仕事で開発を行っていると、他の人がエクセルファイルでデータ資料を作り、プログラマがその情報をアプリに組み込む、なんて事がよくあります。
一度CSVに書き出してからプログラムでそれを読み、使いやすいデータ(XMLやCのソース)にコンバートして利用するのが定石かと思いますが、エクセルファイルを直接読めればCSVに書き出す手間が多少軽減されます。
(そもそもVBAでコンバート処理書いちゃうという人は尊敬されれば良いと思います)

Visual C++6.0ではよくそういう事をやっていたのですが、Visual Studio 2008 + MFCだとどうやるんだろう?と思いましてちょっとやってみました。

メニューからクラスの追加を実行します。
xls00

「TypeLibからのMFCクラス」を選びます。
xls01

エクセルのタイプライブラリを選び、使うインターフェースを追加して(今回は面倒なので全部追加)完了ボタンを押します。
xls02

ちょっと生成に時間が掛かりますが、ヘッダーファイルが生成されます。
ただ、何故か#import文が入っていて、コンパイル時にエラー(名前の競合)が出てしまうので一括置換でコメントアウトします。
xls03

VC6ではできなかった芸当ですね(ソリューション内一括置換)
xls04

あとはごりごりコードを書けばエクセルの操作ができます。

既存のファイルを開いて、最初のシートのA1のテキストを取得するにはこんな感じになるかと思います。
(Excel 2007使用)

#include "CApplication.h"
#include "CWorkbooks.h"
#include "CWorksheets.h"
#include "CWorkbook.h"
#include "CWorksheet.h"
#include "CRange.h"

void CHogeHogeDlg::OnBnClickedButton1()
	CApplication App;
	if (!App.CreateDispatch(_T("Excel.Application"))) {
		ASSERT(0);
		return;
	}
	App.put_Visible(TRUE);

	CWorkbooks Workbooks = App.get_Workbooks();

	// 既存のエクセルファイルを開く
	COleVariant varNull;
	varNull.ChangeType(VT_NULL);
	CWorkbook Workbook = Workbooks.Open(_T("c:\\hogehoge.xls"), varNull, varNull, varNull, varNull, varNull, varNull, varNull, varNull, varNull, varNull, varNull, varNull,varNull, varNull);

	CWorksheets Worksheets = Workbook.get_Worksheets();
	CWorksheet Worksheet = Worksheets.get_Item(COleVariant((long)1));

	CRange Cells = Worksheet.get_Cells();
	CRange Cell = Cells.get_Item(COleVariant((long)1), COleVariant((long)1)).pdispVal;
	CString str = Cell.get_Text().bstrVal;
}

CRange::DialogBoxとかいう関数でコンパイルエラーが出ますが関数名変えるなどして回避します。

当然ながら実行する環境にエクセルがインストールされている必要があります。
また、使用したタイプライブラリと実行時のエクセルのバージョンが違うと、うまく動かない事があるかもしれません。うろ覚えですが。上位互換はあるかも?

もしいろんな操作をやりたい場合、エクセルのマクロのヘルプが参考になると思います。若干関数名は違いますが、構造などはほぼ同じです。

すっかり紹介が遅れましたが、Ver.1.02が公開中です。
Ver.1.02ではメイン画面右端にミニカラーパレットが付きまして、色を手軽に切り替えられるようになりました。
Screenshot 2009.10.20 20.09.53

また、ミニカラーパレットの色をダブルタップすると、色の調節エリアが表示されまして、絵を見ながら色を調節する事ができるようになりました。
Screenshot 2009.10.20 20.10.02

ドットを打つ、色を変える、色を調節する、といった基本的な操作が効率よくできるようになったと思います。
カラーパレット操作の効率が上がったところで、ツール切り替えの効率ももう少し良くしたいなぁと思っているところなのですが、どうやって実現しようか悩み中です。
何か良いアイディアがありましたら教えていただけると助かりますm(_ _)m

さて、Ver.1.02において、ファイル名やレイヤ名に日本語を使うと文字化けを起こす不具合を見つけまして、先ほどこれを修正したVer.1.03を申請したところです。
ちょっと面白みのないアップデートで申し訳ないのですが、通知が来ましたら当ててみてください。
またもし他にも何か変な所がありましたら、wiki等へご報告していただけると助かります。

現在は、PCとデータを相互にやりとりできるようにしようと思いまして、EDGE touch Serverなるものをコツコツ作っております。
ets

せっかくなのでedg形式をそのまま放り込んだり、edg形式として取り出したりできるようにしようと思いまして、EDGE touch専用形式とEDGE1/EDGE2専用形式とのコンバータ部分を書いている所です(これがなかなか大変)。
(EDGE以外のエディタを使っている人向けにPNG形式ともやりとりできるようにするつもりです。)

と甥っ子にせがまれで作ったのがコレ。
tank

一応「戦車」のつもりです・・・。

このブロック、接続できるパターンがかなり限られていて、組み立てるの結構難しいんですよ。
いつも適当に何か作ると、「かっこよくない・・・」、とNGが出るので、今回も駄目かと思いきや、「かっこいい!!」と大変喜んでもらえたので記念に一枚撮ってみました。

甥っ子「この上の回るのがいい!」
たかぼ「おお、これ戦車で、その上の回る奴は砲台なんだぜ、判る?」
甥っ子「これ(砲台)を回転させて攻撃するんだよね!ビシって!」
たかぼ「いや、違うんだけど・・・。
     (別に戦車だから格好いいとかじゃなくて回るのが好きなだけなのね)。」

ま、案の定、次の日には破壊されてました。

V6010480

思えば長い間PS3買おうかXbox360買おうか悩んだものです。

Halo1&2にハマりまくった後、当然Xbox360のHalo3をやりたかった訳で、ある日購入を決意して諭吉さんを何人も連れてビッグカメラに行ったら本体は有ってもソフト(Halo3)が置いてない!って事でガッカリして帰宅(何も買わず)

PS3 Slimの発表&発売でお祭りムードになる。
今後発売予定のFF13やGT5がやりたいので今のうちにPS3買っておこうかな?とPS3にしようかなと揺れまくる。

PS3の値下げに追随してXBOX360も1万程度値下げされる。
しかもHalo3の新作 ODSTが発売されるというビッグニュース付き(個人的に)で、また一気にXbox360が欲しくなる。

出した結論が「両方買うしかない」
( ゚д゚)

そんでもって先週ぐらいにネットでxbox360エリートを買ったというわけです。
でも肝心のHalo3 ODSTはレビューを読んでいるといまいち評判が良くないようでして、プラチナ化するまで待つことにしました。
代わりに地球防衛軍3を買ってみたというわけです。

Halo3ですが、halo1,2とリロードボタンの位置が違うのがちょっとまだ慣れないですが、相変わらず面白いです(キャンペーンしかやってません)。
最近忙しすぎてあんまりゲームやってる時間が無いのですが、良い気分転換になりそうです。

そういえば、ルミネスもxboxに有るみたいですね。
MONDO GROSSOのSHININ’は入って無いのかな?あれ好きなんだけどなぁ。

記事検索

コミュニティ

Banner designed by gebo様
ドット絵掲示板
ドット絵掲示板
自作の「ドット絵」を投稿することができます。ドッターさん同士の交流の場としてご利用ください。
TakaboSoft Wiki
TakaboSoft Wiki
ソフトウェアに関する質問・不具合報告・要望などを書き込むことができます。