05092024

Last update2016/05/28 14:38

Back 現在地: Home パートナー segger-tools スキニング

スキニング

スキニング

スキニングは、1つまたは複数のウィジェットの外観を変化させる方法です。それは、ウィジェットのレンダリング方法を定義する専用のスキンを使用して外観を変更することができます。これは、スキンを変更して同様の方法でウィジェットの完全なグループの外観を変更することが容易になります。

スキンがなければ、ウィジェットのメンバ関数は、それぞれ単一のウィジェットの外観を変更するために使用されなければならないか、コールバック関数が上書きする必要があります。

"皮膚"とは何ですか?

皮膚は単にウィジェットのすべての詳細を描画するための利用できるシンプルなコールバック関数です。それは"スキン"の前に提供されていたウィジェットのカスタマイズの古いメソッドが実装され、ウィジェットの"ユーザの描画関数"と全く同じ方法で動作します。

API関数を使用してからスキニングへ

ウィジェットの外観を変更する別の方法があります。コールバック関数をスキニングし、上書きウィジェットAPI関数、ユーザの描画関数は、ウィジェットの外観を変更するために使用できます。使用する方法の決定は、変更されるべきかに依存します。以下は、それぞれの方法で達成できるかを説明します。

ウィジェットAPI関数を使用する

デフォルトのAPI関数は、古典的なデザインを使用してウィジェットを描画するために使用されるサイズ、色、フォントやビットマップなどの属性を変更することができます。次のスクリーンショットは、何が出来るかの典型的なサンプルを示しています。

一部の属性は変更されますが、基本的な外観は変わりませんができます。

ユーザの描画機能

LISTBOX、FRAMEWIN、GRAPHやボタンウィジェットのようないくつかのウィジェットは、ユーザの描画機能を提供します。これらの関数は、いくつかの追加の詳細を描画したり、一部の項目のデフォルトの描画メソッドを置き換えるために使用することができます。次のスクリーンショットは、フレームウィンドウのタイトル領域を描画するユーザを示しています。ユーザの描画関数は、ウィジェットのAPI関数では実現できないタイトル領域の勾配を、レンダリングします。

スキニング

スキン上記の方法とは異なり、全体のウィジェットの描画といくつかの詳細ではないだけをカバーしています。我々はまた、最新の古典的なウィジェットのデザインなど、はるかに見えるスキンを変更できるウィジェットの外観を持ち上げるためにこの機会を使用。次の表は、新しいデフォルトのスキンと比較して上から約ボックスの外観を示しています。

クラシックなデザインデフォルトのスキン

ウィジェットのコールバック関数の上書き

スキンが実装される前の、ウィジェットの完全な外観を変更する唯一の方法は、ウィジェットのコールバック関数を上書きしていた。これは、ウィジェットの完全なメッセージの処理を完全に制御できるようになります。それは他の方法と組み合わせて使用することができます。コールバック関数を上書きするの主な欠点は、コードの多くは、ユーザーによって書かれる必要があるということです。このプロセスはErrorProneとなります。

スキンを変更できるウィジェット

ウィジェットは、いくつかのウィジェットの特定の詳細で構成されている場合スキニングにのみ意味を持ちます。それは、ウィジェットの種類ごとに意味をなさない。それはテキストそのものだけで構成されているなどの理由でテキストウィジェットは、別々の皮膚を必要としません。

現在、以下のウィジェットは、スキニングをサポートします。

  • ボタン
  • CHECKBOX
  • ドロップダウン
  • FRAMEWIN
  • HEADER
  • PROGBAR
  • RADIO
  • SCROLLBAR
  • スライダー

    皮膚の使い方

    emWinの出荷は、既製使用するすべての上記のスキンを変更できるウィジェットに対するデフォルトのスキンが含まれています。彼らは _SKIN_FLEX指名されている。

    次の表は、すべてのスキンを変更できるウィジェットで利用可能なデフォルトのスキンを示しています。

    ウィジェットデフォルトのスキン
    ボタン BUTTON_SKIN_FLEX
    CHECKBOX CHECKBOX_SKIN_FLEX
    ドロップダウン DROPDOWN_SKIN_FLEX
    FRAMEWIN FRAMEWIN_SKIN_FLEX
    HEADER HEADER_SKIN_FLEX
    PROGBAR PROGBAR_SKIN_FLEX
    RADIO RADIO_SKIN_FLEX
    SCROLLBAR SCROLLBAR_SKIN_FLEX
    スライダー SLIDER_SKIN_FLEX