Tips

SusiePlugin使用デモ(完成)

まあ当たり前だが世には同じようにSusieプラグインを使う部分をライブラリ化しようと考える人は多くいるものである。実際ネットで検索しても結構多くのライブラリが見つかった。(※C#で全てを完全実装したライブラリは見つからなかった。事の始まりはC#での…

しつこくラムダ式について探ってみる。

Wikipediaを見ると、私が先日来よりふざけて作っていたActionやらFuncを滅多やたらと組み合わせる行為は、数学的に立派な意味があることが判明した。詳しくはカリー化 - Wikipediaを見てほしい。カリー化というのは「引数が複数ある関数」を「引数が一つだけ…

ラムダ式をFunc<T>と組み合わせてみたら

static void Main(string[] args) { Func<Func<Func<Func<Func<Func<Func<Func<Func<Func<int>>>>>>>>>> x10 = () => () => () => () => () => () => () => () => () => () => 10; Console.WriteLine(x10()()()()()()()()()()); Console.ReadLine(); }そろそろ苦情が来るかも(笑</func<func<func<func<func<func<func<func<func<int>

ラムダ式をAction<T>と組み合わせてみたら

以前やってたアレ(Action<T>を使い倒してみる - パジャマdeブロッガー(myugaruのヲタ日記))をラムダ式で表すとかなりすっきりとすることがわかった。たとえばx7のときは匿名メソッドだとこうなる。 Action<Action<Action<Action<Action<Action<Action<string>>>>>>> x7 = delegate(Action<Action<Action<Action<Action<Action<string>>>>>> p1) { p1(deleg</action<action<action<action<action<string></action<action<action<action<action<action<string>…

ラムダ式に無くて匿名メソッドに有る唯一の機能

先日書いた「ラムダ式より匿名メソッドが優れてそうな点」(ラムダ式とは? - パジャマdeブロッガー(myugaruのヲタ日記))は私の認識で正解だった。 http://msdn2.microsoft.com/ja-jp/library/0yw3tz5k.aspx ラムダ式にはない機能を匿名メソッドが備えてい…

Susieプラグイン読み出し-やはりネックは構造体の連結

Susieプラグインを読み出すプログラムは一応テストはうまくいった。しかしやっぱり構造体の連結部分が納得のいく形にはできなかった。 以下はBitmapFileHeaderのbfとBitmapInfoHeaderのpBinfoとピクセルデータのpBmをメモリバッファmem上に連結している部分…

ラムダ式とは?

ラムダ式には2通りの使い方がある。 匿名delegateの進化としての使い方 式ツリーとしての使い方 式ツリーというのはコンパイラなどのように式そのものを分解して解釈するようなプログラムを書く場合に式そのものをデータとして保持するような仕組みで利用さ…

初めてのLinq

Linqがちょっとわかってきた(と思う)。 using System; using System.Linq; using System.Collections.Generic; namespace Query1 { static class Program { struct N { public int a, b, c; } static void Main(string[] args) { List<N> list = new List<N> { n</n></n>…

構造体をメモリ(byte[])に吐き出す方法はあるか?

さて昨日はプラグインから戻ってきた3つの構造体をどうやって1つにくっつけるか?というところで止まっていた。これが難しい原因は大きく2つある。●マネージドのメモリ管理の問題 まず最初の問題はC#の文法的な問題ではなく.Netのメモリ管理に関係する問…

SusieプラグインをC#から利用する

今日はSusieのプラグインをC#から利用してみようと思って色々調べていた。 世の中には同じことを考える人が多いらしくてたくさんの例題があった。 しかし私としては次のことを念頭に置いて話をすすめたい。 マネージドだけで作る C#だけで作る 世のサンプル…

透過色と透過度(Alpha値)

さて昨日、Shapeには透過色の考慮が無いと書いたが正確には『Alphaブレンドを考慮して描画しない事』と『透過色の概念が無い事』の2つのことを混ぜて書いてしまっていた。さらには『結果としてのビットマップが透過機能を持つ事』と『描画ルーチンが透過の…

24ビットBitmapでのShape描画例

using System; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms; using ImageUtils; namespace ShapeTestApp { public partial class MainForm : Form { int drawType = 0; public MainForm() { InitializeComponent(); } …

Action<T>を使い倒してみる

Actionは『T型の引数を一つとり返値が無い関数』を意味するdelegate型である。System.Windows.Formsに定義されている。 delegate void Action<T>(T obj);さてコンソールへメッセージを簡単に出力するConsole.Writeの使用方法を良く見てみると・・・ Console.Wri</t>…

Action<T>を使い倒してみる(つづき)

・・・ということでさっそく作ってみた。nが増えるにつれ素晴らしいモノが出力される。念のためにx100をコンパイルしてみてtestと表示できることを確認済み。 using System; namespace garu.ActionN { static class ActionN { const int TAB = 2; const stri…

Web140色の一覧を得る方法

Color構造体には定義済みの名前のついた色のリストが存在している。俗にWeb140色というらしい。これを一覧したい場合には次のようにやる。 using System; using System.Drawing; using System.Reflection; namespace garu.ColorList { static class ColorLis…