2016-12-13 15 views
0

背景画像で透明度を使用している例が見つかりましたが、このオプションは私には合いません。バックグラウンドは特定のアクションに応じて変化すると想定されるためです。WinCe 5.0で透過イメージを使用するには?

+0

をあなたはどのようなプログラミング言語を使用していますか?たとえば、C#.NET 2.0/3.5 CompactFrameworkまたは埋め込みC++。 – AlainD

+0

C#3.5 CompactFramework – Macro

+0

おそらく質問に追加してください(Visual Studio 2008の私の前提と同様)、これらのコメントを削除することもできます。 – AlainD

答えて

1

細部として何をしているのかは分かりませんが、これが役立つことを願っています。透明性を持つアイコン(.ico)ファイルは、次のように使用します。これらは背景を単一の色に変えるだけです。より複雑な振る舞いが必要な場合、これは適切ではないかもしれません。

  • いくつかのアイコン(透明な背景)をプロジェクトに追加します。 Build ActionEmbedded Resourceと設定します。下の例では、ico1.icoというアイコンを使用しています。

  • アイコンを保持する構造を定義します。必要な背景色の数に応じて、必要なアイコン/色の組み合わせごとにインスタンスが存在します。数字がデザイン時に非常に大きいか不明な場合は、オンザフライでアイコンを作成する必要があります。

    public struct CacheGraphics 
    { 
        public Bitmap ico1White, ico1Blue; 
    } 
    public static CacheGraphics cacheGraphics;` 
    
  • キャッシュアイコン:

    private static Bitmap GetIconImage(string szIcon, Color clrBackground) 
    { 
        // Convert an embedded icon into an image 
    
        // Load icon 
        string szImage = ("YOUR-PROJECT.Resources.Icons." + szIcon + ".ico"); 
        Assembly _assembly = Assembly.GetExecutingAssembly(); 
        Stream file = _assembly.GetManifestResourceStream(szImage); 
        Icon icoTmp = new Icon(file); 
    
        // Create new image 
        Bitmap bmpNewIcon = new Bitmap(icoTmp.Width, icoTmp.Height, PixelFormat.Format32bppRgb); 
    
        // Create a graphics context and set the background colour 
        Graphics g = Graphics.FromImage(bmpNewIcon); 
        g.Clear(clrBackground); 
    
        // Draw current icon onto the bitmap 
        g.DrawIcon(icoTmp, 0, 0); 
    
        // Clean up... 
        g.Dispose(); 
    
        // Return the new image 
        return bmpNewIcon; 
    } 
    
  • は、各アイコンのための単純なエイリアスを定義します:

    // Alias which goes at the top of any file using icons: using icons = YOUR-PROJECT.CCommon.AppIcons; 
    public enum AppIcons 
    { 
        ICO1_WHITE, 
        ICO1_BLUE 
    } 
    

    cacheGraphics.ico1White = new Bitmap(GetIconImage("ico1", Color.White)); 
    cacheGraphics.ico1Blue = new Bitmap(GetIconImage("ico1", Color.Blue));` 
    
  • は、背景色を変更するヘルパー関数を書きます

  • リクエストに応じてキャッシュされたアイコンを返すためにヘルパー関数を書く:必要なとき

    public static Image GetCachedIcon(AppIcons eIcon) 
    { 
        // Return a cached icon image. These icons are cached at application startup. 
        Image imgIcon = null; 
        switch (eIcon) 
        { 
         // System Settings > Advanced 
         case AppIcons.ICO1_WHITE: 
          imgIcon = (Image)cacheGraphics.ico1White; break; 
         case AppIcons.ICO1_BLUE: 
          imgIcon = (Image)cacheGraphics.ico1Blue; break; 
        } 
    
        return imgIcon; 
    } 
    
  • 使用のアイコンを:

    picturebox1.Image = CCommon.GetCachedIcon(icons.ICO1_WHITE); 
    picturebox2.Image = CCommon.GetCachedIcon(icons.ICO1_BLUE); 
    
+0

AlainD再起動後にバグを修正する方法を教えてください。デスクトップからショートカットを紛失しました。したがって、Program Filesにプログラムをインストールすると、プログラムも消えます。しかし、プログラムがSystemフォルダにインストールされていれば、それは保存されます。しかし、ラベルがまだ理解できないようにする方法。 – Macro

+0

@Macro:Windows CEデバイスには、固定書き込み保護セグメントとユーザー領域があります。あなたは自分のプログラムとショートカットをユーザーエリアに配置する必要があります。デスクトップは通常、ユーザーエリアではなく、そこに置いたショートカットは再起動時に削除されます。プログラムを自動的に起動させるには、 'DEVICE-USER-AREA \ Start'フォルダまたは' HKLM \ init \ LaunchXXX'のレジストリに入れます。これは元のものとは別の質問ですので、回答を探すか別の質問をする必要があります。希望が役立ちます。 – AlainD

+0

AlainDトピックを作成しました – Macro

関連する問題