画面上の指定の文字位置の座標を取得したNo.11255
western さん 23/04/24 09:48
 
レンダリング枠の配置の都合なのでこちらで

レンダリング枠を、エディタ画面のカーソルの *上側* を起点にした位置に
配置するだけの場合は支障ないのですが、


・カーソルの下側に配置したい場合に使える *行の高さピクセル* を計算時に取得し
たいです
 これがあれば y - screentopy を併用することで、カーソル行の上に どれだけ空間が
 あるかも計算でき、レンダリング枠をカーソル行の上下どちらにおけるか判定でき
るのです
 (左右の調整の都合で同じように *半角一文字の幅ピクセル* も欲しいです)

・上記の2つの値があれば、計算で求められるようになるのですが、
 カーソル位置ではない (x, y) or (lineno, column_wcs) を指定した文字の位置の
 xpixel/ypixel を取得して、カーソル以外の文字位置を起点した配置もしたいのです
 (秀丸標準の補完のリスト表示される際の左端が、既存文字と揃うような動作)


マクロでカーソルを移動してから xpixel, ypixel を取得するロジックを試したので
すが
disabledraw 状態では、カーソル位置の値を取得できなかったり
(disabledraw 前の値でとれる。また disabledraw しないと描画されるので当然にチ
ラつく)

screentopy に移動すると、動作設定の都合でスクロールが発生してしまうなど
期待する値を取得するのに難儀しております (差を使って取得するには最低2行/2
文字が必要など)

既存の命令などを併用して出来るのであれば、計算式のご教示よろしくお願いします

[ ]
RE:11255 画面上の指定の文字位置の座標をNo.11263
秀丸担当 さん 23/04/24 16:21
 
行の高さは、行間を考慮に入れなければ、フォントの高さのピクセル数のfontsize
キーワードで得る方法があります。
半角一文字の幅を直接得る方法は無いです。
固定ピッチフォントの正方形前提なら高さの半分という適当な計算でもだいたい合う
かもしれないです。

カーソル位置でない指定した位置のピクセル位置を直接得る方法は無いはずなので、
いったん移動したりする必要があります。
得る方法もあったらいいかもしれません。
現状でdisabledraw2にするとなんとかなるかもしれないですが、確実に元の位置とsc
rollに戻るようになっていないと画面の描画が崩れる可能性があります。
最終的にはレンダリング枠を大量に複数配置してスクロールなどにもリアルタイムに
追随ということだと思いますが、V9.22ではとりあえず普通にブラウザ枠と見れるこ
とと、大量ではない追随しないレンダリング枠までを目標にしたほうがいいような気
がしてきました。

[ ]