プロフィール

Author:Sgt.Shirase
まうまう

最近の記事

カテゴリー

月別アーカイブ

最近のコメント

最近のトラックバック

コメントもどき
(引用、返事が不要な方はコメント頭に*を付けてください。)

名前
本文

わっつあばうと『きゃっちま』

このページはサークル『スマイルキッチン』によるPC用お絵かきチャットゲームっぽいソフト『きゃっちま』の開発状況をつらつらと書くところでした。
ルールは単純
出題者が何のお題を指定されて描いているかを残りの人が当てるだけ。ええ、アレです。

サイトを統合しました。以後『きゃっちま』の最新情報はこのサイトを見て下さい。
『きゃっちま製作者blog』へ

C76

受かってしまいました。なんということでしょう。
やっつけ製作所
サークル名が違います。スマイルキッチンは料理のサイトとかひっかかりまくるので変えました。
製作進行状況は一度振り出しに戻ったりしていたので酷いもんです。
なんとしてでも1ステージは完成させたいところ。

C++ : ガウス確率積分(error function) double erf(double x) が見つからない!

C99のtgmath.hの中にある。C++にはないみたい。
何かっていうと、ガウス分布関数を 0 〜 x まで積分したもの。
近似式は、円周率PIは適当にdefineなりconstしたものとして
(x>0? 1:-1) * sqrt( 1 - exp(-4 * x*x / PI) );
こんな感じ。-4/PIは計算しておいて定数にするといいね。
もっとしっかりした実装が欲しいなら詳しくは
C言語による最新アルゴリズム事典
を参考にすると良い感じ。実はこのページにあるサンプルコードのigamma.cの中を見れば……。

サイドバイサイド構成

Vistaでこれが出たらとりあえずリリースビルドしてるか確認。
C#ならプロジェクトのプロパティ、ビルドタブの中のホスティングプロセスを無効に。
フックをやるときは無効にしないと駄目みたい。

C# GetGlyphOutline(WPF)

           System.Windows.Controls.Image anImage = new System.Windows.Controls.Image();

            var gt = new GlyphTypeface(new Uri(@"file:///C:\WINDOWS\Fonts\MSPgothic.ttf"));
            char ch = 'あ';
            ushort glyphIndex;
            //charから指定したフォントのGlyphIndexを取得
            gt.CharacterToGlyphMap.TryGetValue((int)ch, out glyphIndex);
            Geometry GlyLine = gt.GetGlyphOutline(glyphIndex, 50, 2);

            var gd = new GeometryDrawing();
            gd.Geometry = GlyLine;
            gd.Brush = new LinearGradientBrush(
                Colors.Blue,
                Color.FromRgb(200, 200, 205),
                new Point(0, 0),//グラディエーション開始
                new Point(1, 1));//グラディエーション終了
            gd.Pen = new Pen(Brushes.White, 1);

            DrawingImage geometryImage = new DrawingImage(gd);

            anImage.Height = 100;
            anImage.Width = 100;
            anImage.HorizontalAlignment = HorizontalAlignment.Left;
            anImage.VerticalAlignment = VerticalAlignment.Top;
            anImage.Source = geometryImage;

            var bmp = new System.Windows.Media.Imaging.RenderTargetBitmap((int)anImage.ActualWidth + 10, (int)anImage.ActualHeight + 10, 100, 100, PixelFormats.Pbgra32);
            bmp.Render((Visual)anImage);//既に表示されているものしかRender出来ないらしい…
            //pngに保存
            var bmpFrame = System.Windows.Media.Imaging.BitmapFrame.Create(bmp);
            var stream = new System.IO.FileStream(@"test.png", System.IO.FileMode.Create);
            var enc = new System.Windows.Media.Imaging.PngBitmapEncoder();
            enc.Frames.Add(bmpFrame);
            enc.Save(stream);
            stream.Close();

アバウトな流れとしてはこんな感じにGlyphOutLineを描画したものを画像ファイルに保存出来るけど
問題としてはImageはウィンドウに描画された後じゃないとRenderTargetBitmapに渡しても
中身がないので何も表示されないとこ。
仕方がないので適当にウィンドウ1個用意してそこのContentに渡す必要がある


▲ページトップ

FC2Ad

FC2ブログ 求人情報Powered by FC2 Blog