5

「hello world」を出力するcのカーネルでデスクトップOSを作成しました。C で自分の OS 用の GUI (カスタム ウィンドウ マネージャー、ボタン) を作成しようとしていますが、問題が発生しています。私は1つのチュートリアルを見ました:

http://www.osdever.net/tutorials/view/gui-development

Cのデスクトップ オペレーティング システム用の GUI チュートリアルの種類はありますか?

ps Linux も DOS もありません。C標準のみ。

4

2 に答える 2

6

ここでは特別なチュートリアルは必要ないと思います。最も基本的な GUI のコアは、ウィンドウ、ボタン、画像、テキスト ボックスなどを表す長方形のオブジェクトのリストを管理することで構成されます。

このようなすべての長方形のオブジェクトには、x 座標と y 座標と寸法 (幅と高さ) があります。また、その下にあるオブジェクト (Z が小さい) と上にあるオブジェクト (Z が大きい) を示す z (深度) 座標もあります。

すべての長方形のオブジェクトには、その親とその子へのポインターもあります。これにより、より小さくて単純な四角形の任意の複雑なウィンドウを簡単に構成できます。オブジェクト。たとえば、ウィンドウをつかんで移動すると、これらの親/子ポインターを使用してすべてのオブジェクトを移動できます。または、外側のオブジェクトがイベントを受け取った場合、それを内側の子に転送して処理することができ、その逆も可能です。

これらのすべての長方形のオブジェクトをレンダリングする場合、その一部は他のオブジェクトによって部分的または完全に隠されている可能性があります。最も重要なことは、すべてのオブジェクトのどのオブジェクトが表示されているか、表示されていないか、部分的に表示されていないかを判断することです。多くの不要な作業。オブジェクトを効率的に描画するには、すべてのピクセルを最大で 1 回 (常に、またはほとんどの場合) 描画します。必要となる四角形の交差/分割コードに加えて、これは、すべてのオブジェクトがそれ自体の任意の四角形部分を効率的に描画する方法を知っていることも示唆しています。これは、無地のオブジェクトでは最も簡単です。写真の場合、多かれ少なかれ簡単です(画像のスケーリングと色の削減/変換をその場で行いたくない場合を除く)。テキスト オブジェクトとベクター オブジェクトの場合は、これが最も困難です。

マウス ポインター オブジェクトを小さな長方形のオブジェクトから構成し、他のすべてのオブジェクトと同じコードで描画および再描画することもできます。ポインターの z (深さ) 座標が、ポインターが常に他のすべてのオブジェクトの上にあることを確認してください。

それが一般的な考え方です。

于 2012-01-22T23:50:10.157 に答える