2017-12-15 14 views
0

私の人生を楽にするために私の終わりのない探求で、私はそれをより困難にするために何かに遭遇しました。GoogleスライドAPIの重要な問題?

誰かが、Google Apps Scriptを使用してGoogleスライドでオブジェクトを作成または編集した結果、不正確な浮動小数点バージョンが発生することがありましたか?

例、オブジェクトの作成:

SlidesApp 
.getActivePresentation() 
.getSlides()[0] 
.insertShape(SlidesApp.ShapeType.RECTANGLE, 20, 20, 200, 200); 

をしかし、結果として矩形が、これらの特性があります。

Top: 20 
Left: 20 
Width: 200.00787401574803 
Height: 200.00787401574803 

をそして、何と同じように悪いのですが、トップと左の1ピクセルの境界線として完璧画素ではないされていますあなたは正しい上と左の整数値が与えられていると思います。

これは私が最初に試みたのはx/y、w/hを丸めて少なくともページ上できれいになる形にすることであり、同じ問題が発生したからです。

+0

削除されました。これは答えになるはずです... – Arlo

答えて

1

さらにいくつかの掘削は2つのものを示します。

1)これらのクレイズフロート(丸め誤差)は、スライド上のオブジェクトのぼかしの原因ではありません。安全に無視することができます。

2)スライドのピクセル値は.375の倍数であるようです。オブジェクトを1ピクセル右に移動するには、実際には.375を右に移動する必要があります。スライドのオブジェクトの値を丸めたい場合は、* 2.66666の値を丸め、その結果に.375を掛ける必要があります。

例:

pageElements[0].setTop(Math.round((pageElements[0].getTop() * 2.6666666666666))*.375); 

だから今、私が作成し、サイドバーのツール内のオブジェクトのピクセル完璧な編集の本来の目的が可能になりました。すごい!

+1

'getTop'と関連するメソッドはすべてピクセルではなく、距離をポイント(1/72インチ)で測定します。ピクセルへのポイントのマッピングは表示デバイスとズームレベルによって異なるため、これは意図的なものです。最終的なプレソムをどこに表示しているかによって、いくつかのバリエーションがあることに注意してください。 –

+0

@MauriceCodik - 現在のポイント・ツー・ピクセルの比率が何であるか、またはドキュメントのインチ・ベースのディメンションは何かを確認する方法があるかどうかは分かりますか?私は私の2.66を推測しています...と.375の値は、私がフェッチできるいくつかの他のピースデータで導出できますが、私はGoogle Apps Scriptのドキュメントを見ると何も明らかではありません。 – Arlo

+0

@ Arlo--私はそうは思わない、申し訳ありません。 –

関連する問題