2012-02-23 4 views
1

私は以下のシンボルを持っています! C言語で書かれている:UINT8のカスタムシンボル - どのようにC#に変換する?

const UINT8 ras[1][28] ={ {0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00} }; //'!' 

これをC#でシンボルとして作成し、それをコンソールやイメージに印刷する必要がありますが、それはどうですか?

私はそれが印刷されるはずです知っている!しかし、私はどのように私の配列から得たのですか?

+1

ここで「シンボル」とはどういう意味ですか? –

+0

C++、C#、Cはこの質問の対象ですか? – pavanred

+0

上記の例では、!変換時に。しかし、私はそれをどのように変換するのか分かりません。私は配列が何であるかを知りません。 C/C++で書かれているので、C#で使用する必要があります。 –

答えて

3

これは16x14ピクセルのビットマップのようです。私たちは2でバイト2を取るならば、我々が得る:

0x00, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x00, 0x00, 
0x00, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x30, 0x00, 
0x00, 0x00 

さて、値0x30のバイナリパターンは00110000あるので、2×2画素ドット、および2×8ピクセルと感嘆符のように見えます垂直部分は、そのように(各行の一番右にあることから、唯一の一番左のバイトを保つ0またはブランクです):

00000000 
00110000 
00110000 
00000000 
00000000 
00110000 
00110000 
00110000 
00110000 
00110000 
00110000 
00110000 
00110000 
00000000 

もちろん、それはアップサイドダウンもあります。上記の情報を使用すると、たとえば次のような情報を作成できます。プレーンな古いBitmapとそれを初期化するので、最終的にC#で表示されるものが得られます。もちろん、この非常に単純化されたイメージのために少し丸みを帯びているように聞こえますが、依然としてそうです。私は本当にC#の開発者ではないよ、このコードは非常に荒れていることを

byte[] input = new byte[] { 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00 }; 

glyph = new Bitmap(16, 14, System.Drawing.Imaging.Format1bppIndexed); 
for(int y = 0; y < glyph.Height; y++) 
{ 
    int input_y = (glyph.Height - 1) - y; // Flip it right side up. 
    for(int x = 0; x < glyph.Width; x++) 
    { 
    bool on = input[2 * input_y + x/8] & (0x80 >> (x % 8)); 
    glyph.SetPixel(x, y, on ? System.Drawing.Color.Black : System.Drawing.Color.White); 
    } 
} 

注:

はあなたのような何かをするだろう、ビットマップを初期化します。疑似コードとして扱います。

+0

+1は「明らかに、それはまた逆さまです」というコメントです。どういうわけか私はシャーロックホームズを思い出させました。あなたは見るべきバイト配列を持っていて、あなたは明らかに終わります。逆さま:P – pavanred

+0

非常に正しいように巻き戻します。実際にwriteablebitmapを作成して初期化する方法を私に教えてもらえますか? –

+0

http://pastebin.com/b2xtvhar - 私はさらに詳しい方法を知りません。 –

関連する問題