3

次のメソッドを C# から MonoTouch 準拠のコードに変換する必要があります。

private WritableBitMap CreateBitMapWPF(RGBPaletteRecord rgbPalette, double dpi)
        {
            WritableBitMap bitmapImage = null;

            try
            {
                bitmapImage = new WritableBitMap(TileRecord.PixelWidth, TileRecord.PixelHight, dpi, dpi, PixelFormats.Rgb24, BitmapPalettes.Halftone256);
              //  int nStride = (bitmapImage.PixelWidth * bitmapImage.Format.BitsPerPixel + 7) / 8;
                int nStride = (bitmapImage.PixelWidth * bitmapImage.Format.BitsPerPixel  / 8);
                System.Windows.Int32Rect rect = new System.Windows.Int32Rect(0, 0, TileRecord.PixelWidth, TileRecord.PixelHight);

                byte[] data = GetBytes(rgbPalette);

                bitmapImage.WritePixels(rect, data, nStride, 0);
            }
            catch (Exception ex)
            {

            }

            //// temp write to file to test         
            //using (FileStream stream5 = new FileStream(@"C:\test.bmp", FileMode.Create))
            //{

            //    BitmapEncoder encoder5 = new BmpBitmapEncoder();
            //    encoder5.Frames.Add(BitmapFrame.Create(bitmapImage));
            //    encoder5.Save(stream5);
            //    stream5.Close();
            //}

            //
            return bitmapImage;

        }

誰かに実際の変換を依頼しているわけではありませんが、このコードを変換する際の最善の方法は何でしょうか? MonoTouch ライブラリを使用するための変換に集中する必要がありますか? 標準システム ライブラリ? アドバイスをいただければ幸いです。

どうもありがとう、

タイシン

編集; 基本的に、この変換の目的は、ビットマップ イメージを処理する一連の関数を実行するこれらの C# クラスを用意することです。iPhone アプリケーションでこれらのファイルを使用する必要があるため、MonoTouch を使用しています。

4

2 に答える 2

5

このコードを変換するときの最善の方法は何ですか?

それはあなたの目標とアプリケーションによって異なります。製品/バージョン間でコードを共有する予定がある場合は、プラットフォームの詳細を抽象化し、プラットフォームごとにコードを分離する API を使用することをお勧めします。

MonoTouch ライブラリを使用するための変換に集中する必要がありますか?

WPF API は、iOS (または MonoTouch) ではサポートされていません。そのため、 MonoTouchが提供する iOS API を確認するのが最も確実です (つまり、サード パーティのライブラリを確認する前に、既に利用可能なものを確認してください)。

iOS CoreGraphicsを使用すると、同様の機能を見つけることができます(一般的に、古いSystem.Drawingモデルとかなり似ています)。ビットマップ イメージについては、そのCGImageタイプのドキュメントを読む必要があります。

于 2012-09-04T17:35:24.480 に答える
0

このプロジェクトも見てください:

https://github.com/praeclarum/CrossGraphics

Frank Krueger (gg!) によって作成され、プラットフォーム間で同じ基本的なグラフィックス コードを共有できます。各プラットフォームの詳細な実装を抽象化した API です。今のところ、基本的なグラフィックのみに限定されているようです (fillrect など....

于 2012-09-06T12:45:59.690 に答える