HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0128
ツノンPolyBezier 関数のバグについて4解決


ツノン

リンク

2013/1/28(Mon) 17:57:36|NO.52074

hspで PolyBezier 関数と、三角関数などを用いて 図形を描画したり、回転したりする実験を行っていたのですが。バグを見つけて困っています。
どうやら 左下から右上に向かって描画する際に時々ドットが欠けるバグのようです。
PolyBezierTo 等の関数でも同様のバグが見られました。

もしかしたら環境による物しれませんので宜しければ、下記のスクリプトをテストしてご報告いただければうれしいです。


#include "gdi32.as" #define バグのある配列を有効にする 1 CreateSolidBrush 0xAAFFFF hBrush=stat #if バグのある配列を有効にする // バグのある配列 #if 1 arr=319,171,349,189,369,213,381,280,335,255,299,256,227,268,279,212,291,183,319,171 #endif #if 1 arr=232,285,236,235,254,194,330,135,330,210,354,255,416,338,312,310,267,313,232,285 #endif #else // 正常な配列 arr=268,173,311,168,348,178,409,233,346,244,312,271,251,335,260,243,250,206,268,173 #endif // 描画する PolyBezier hdc,varptr(arr),10 // 塗りつぶしてみる SelectObject hdc,hBrush:DeleteObject stat ExtFloodFill hdc,320,240,0x000000, 0 redraw DeleteObject hBrush



この記事に返信する


KA

リンク

2013/1/28(Mon) 20:17:27|NO.52075

試したけど、その様な表示には成りませんでした。

線が細いので、良くあるドットピッチの関係で切れている
ようには見えます。



暇人

リンク

2013/1/28(Mon) 20:58:15|NO.52080

>線が細いので、良くあるドットピッチの関係で切れている
見た目の問題じゃなく
閉じた領域を塗りつぶす命令も使ってるので
ウィンドウ内全体黄色になってたら欠けてるって事

自分の環境XPsp3では線は閉じて無くて全体が黄色になった
有効にするを0にしたら閉じた

解決に役立つか分からないが探してみたページ

PolyBezierとか☆の輪郭だけ描くとかリージョンのテスト
http://quill.to/qd_flare/66fa864a1c



ひでぶ

リンク

2013/2/1(Fri) 22:38:13|NO.52132

7sp1x64の環境で試してみましたが、確かに欠けてますね。

で、試しにとバグ配列の各要素を2倍してみたら(=図形を維持したまま2倍に拡大したら)
不思議な事に、今度は欠けてないんですよね。
つまる所、実数のベジェ座標を整数のXY座標に変換する過程で
あまり目が粗いとズレが発生してしまう、という事なんでしょうか…?

…と思いましたが、逆に正常配列の方を2,4,8と割って縮小していっても
こちらに不具合が発生する事は無いようでした。どれだけ粗くなっても、全く欠けません。

一体何がどうなっているのやら。お役に立てず申し訳ない限りです。



ツノン

リンク

2013/2/3(Sun) 16:02:29|NO.52150

どうやらバグのようですね。
問題は解決していませんが疑問は氷解しました。

KA 様
暇人 様
ひでぶ 様

有難うございました。



ONION software Copyright 1997-2021(c) All rights reserved.