1

フルスクリーンのミニマルなテキストエディタを作成しようとしています(ミニマルとは、点滅するカレット、黒い背景、テキスト内を移動するための矢印によるキーボードコントロール、バックスペースの削除などのみを意味します)。RenderWindowを作成し、テキスト用のグローバル文字列バッファーを使用し、String2Dクラスを使用して画面上で視覚化します(VC2010およびSFML .NETパッケージを使用してC#で開発しています)。

基本的に私がしていることは、キーストロークをキャッチし、それらが文字、数字、または書き込みに役立つその他の書かれた記号から来ているかどうかを確認し、RenderWindowの描画を使用して画面上に永続的に視覚化される文字列バッファにそれらを追加または削除することです。

ここで問題となるのは、矢印で制御される正しいカレットの動きをどのように実装できるかということです。誰かが下/上/左/右矢印を使用してテキストの画面全体を移動したい場合。1行のテキストでの左/右の移動は簡単です。カウンターを実装して、どの文字の後で気を付け直す必要があるかを知ることができます。それにもかかわらず、最終的には画面が終了する場所で線を切る必要があります。次に、誰かが下または上に行いたい場合にキャレットをレンダリングする場所を正しく「発見」し、誰かが文字列のどの位置にあるかを知る方法を教えてください。後でテキストの一部を追加または削除できます。それとも私のアプローチは完全に間違っていますか?お知らせ下さい。

4

1 に答える 1

2

Lineインデックスを保持するオブジェクトの追加リストをメインの文字列バッファに保存します。バッファに改行が追加されるたびに、現在のオブジェクトを更新Lineし、新しい行に新しいオブジェクトを追加します。

カレットを移動するには、現在の行を見つけて、必要に応じて行を上下に移動します。

別のアプローチは、各行を別々の文字列に格納することですが、これにより、行にまたがる操作を実行するときに複雑さが増します。

于 2010-12-15T17:46:50.343 に答える