ようこそゲストさん | ログイン |

掲示板

トップページ > 記事閲覧
ラスタの回転、輝度
日時: 2010/09/29 19:52
名前: nakano10

たびたびお世話になります。

RLV、またはBMPを回転中心座標と角度を指定して一時的に回転させたいのですが、
FGMOVCやFGMOVRでは角度を指定できず操作が必要になってしまいます、何か方法はございますでしょうか。

SETDENSITYにて二値ラスタ画像を明るくしてベクターを強調したいのですが、
パラメータ1に1.0より大きい値を指定しても明るく(薄く)なりません(暗くすることはできます)、
どのようにすれば明るくなるでしょうか。
メンテ

Page: 1 | 2 |

Re: ラスタの回転、輝度 ( No.2 )
日時: 2010/09/30 18:04
名前: GEOSIS

「ラスタの回転、輝度」の続き

【二値ラスタ画像の輝度設定について】
SETDENSITYコマンドは、ラスタ画像の色成分にパラメータで指定した調整値を乗算した色で表示するようにするコマンドです。
色成分は赤(R)、緑(G)、青(B)の3色で設定されますが、それぞれに最大値(255)があるため、それを超える輝度で表示する事は出来ません。
例えば黒の場合、R=0、G=0、B=0ですので、SETDENSITYの調整値を2.0としても、0×2.0=0となり黒のままとなります。
同じく白の場合、R=255、G=255、B=255ですので、255×2.0=510となりますが、最大値が255の為、同じく白のままとなります。
ですので、色成分が0又は255になっているピクセルは輝度調整が出来ませんので
ラスタ画像の色成分を編集して、0または255以外にするしか方法は御座いません。


御手数をお掛け致しますが、宜しく御願い致します。
メンテ
Re: ラスタの回転、輝度 ( No.3 )
日時: 2010/10/01 13:13
名前: nakano10

ご回答ありがとうございます

【二値ラスタ画像の輝度設定について】
は画像のパレットを変更し、PNG形式にすることで明るくすることができました。

【RLVまたはBMPの回転について】
は試しましたが枠ポリゴンだけが回転する状態です。
またFGMOVAでユーザー操作を必要としてしまうのですが、これを避ける方法はございますでしょうか。

文字数制限につき、ソースを次の書き込みに続けます。
メンテ
Re: ラスタの回転、輝度 ( No.4 )
日時: 2010/10/01 13:15
名前: nakano10

以下にVB6ソースを示します(グループ10はBMC、グループ501は表示or印刷用)。

Public Sub RotBmp(argCX#, argCY#, argAng#)

Dim firstX#, firstY#
Dim tmpX#, tmpY#

'1
georet = gexec(GEOSIS, "FGFRAME", "ZUKAKU", "01_")
'2
georet = gexec(GEOSIS, "FGSEEK", "ZUKAKU", "NUM", 1)
'3
georet = gexec(GEOSIS, "FGGETINFO", "ZUKAKU", "COORD")
firstX = GEOSIS.ReturnD1
firstY = GEOSIS.ReturnD2
'4
georet = gexec(GEOSIS, "FGCURDB", "ROTZUKAKU", "C", "! ! ! ", firstX, firstY, "POLS 6 ! 6")
'5
Do
georet = gexec(GEOSIS, "FGSEEK", "ZUKAKU", "INC")
If georet <> 0 Then
Exit Do
End If
georet = gexec(GEOSIS, "FGGETINFO", "ZUKAKU", "COORD")
tmpX = GEOSIS.ReturnD1
tmpY = GEOSIS.ReturnD2
georet = gexec(GEOSIS, "FGCURDB", "ROTZUKAKU", "A", "! ! ! ", tmpX, tmpY, "POLN 6 ! 6")
Loop

文字数制限につき、続きます
メンテ
Re: ラスタの回転、輝度 ( No.5 )
日時: 2010/10/01 13:16
名前: nakano10

'6
georet = gexec(GEOSIS, "FGCURDB", "ROTZUKAKU", "A", "! ! ! ", firstX, firstY, "POLN 6 ! 6")
'7
georet = gexec(GEOSIS, "FGINPUT", "ROTZUKAKU", 501)
'8
georet = gexec(GEOSIS, "FGATOG", "ROTZUKAKU", "ROTZUKAKUG")
'9
georet = gexec(GEOSIS, "FGMOVA", "ROTZUKAKUG", "ROT", argCX, argCY, "!", argAng * 3.141592653 / 180)
'10
georet = gexec(GEOSIS, "FGGTOA", "ROTZUKAKUG", "ROTZUKAKUA")
'11
georet = gexec(GEOSIS, "ADDBMC", "ZZANGADD", 10, "ROTZUKAKUA", "!", 4)

georet = gexec(GEOSIS, "DSPREFRESH")

End Sub

以上です、長々とすみません。
メンテ
Re: ラスタの回転、輝度 ( No.6 )
日時: 2010/10/04 18:55
名前: GEOSISサポート

nakano10様

【枠ポリゴンだけが回転する状態について】
回転しない現象は、以下の原因が考えられます。
・ADDBMCコマンドのパラメータ1に指定したBMPファイル名を拡張子まで指定して下さい。
・ADDBMCした図面【ZZANGADD】は存在しているかご確認下さい。

【FGMOVAでユーザー操作が必要になる件について】
前回回答させて頂いた【RLVまたはBMPの回転について】の処理の6までは同じ処理になります。
以下の処理は、7の続きになります。

7.回転行列で回転後の座標値を求めます。

  @FGSEEKで回転を行う図形の中間ファイルのカレントをトップにします。

  AFGGETFIGで回転する図形の中間ファイル1レコード目の座標値を取得します。

  B取得した座標値を回転します。
   回転中心座標(X0, Y0) 回転前の座標(X1, Y1) 回転後の座標(X, Y) 回転角度θとします
   X = (X1 - X0)хcosθ - (Y1 - Y0)хsinθ + X0
    Y = (X1 - X0)хsinθ + (Y1 - Y0)хcosθ + Y0

8.FGEDITで7-Bで取得した座標値に変更します。

9.FGSEEKで次のレコードに移動します。
※7〜9は全点分処理を行ってください。

10.ADDBMCでパラメータ3に8の中間ファイル(座標変換後)を指定し、パラメータ5に4を指定してBMCに図面枠情報を追加します。

以上よろしくお願い致します。
メンテ
Re: ラスタの回転、輝度 ( No.7 )
日時: 2010/10/06 19:58
名前: nakano10

ご回答ありがとうございます

要回転領域をBMPCOPYにてBMPファイルに出力し、それをADDBMVすることで
意図すべきラスタの回転を得ることができました。
(なお座標変換はFGINPUT直前で行う必要がありました)

最初に申し上げましたように一時的に必要であるため、不要になったら元に戻すのですが、
ラスタはADDBMCでDを指定して削除、
枠ポリゴンはFGDELEで削除、
で見かけ上は元に戻るのですが再度ラスタ回転を行おうとすると
要回転領域のBMPCOPYで失敗します。
前のBMPファイルが残っており、VB側のファイル削除もエクスプローラから直接削除も拒まれます。
他に解放する手続きが必要なのでしょうか?
メンテ
Re: ラスタの回転、輝度 ( No.8 )
日時: 2010/10/07 10:46
名前: GEOSISサポート

nakano10様

GEOSISは使用したラスタを内部キャッシュする場合が御座います。
今回の現象はGEOSISがキャッシュしている為に発生している可能性が高いと考えられますので、
ADDBMCで一時的に追加したラスタを削除した後、
以下のコマンドでキャッシュをクリアしてみて下さい。

・DSPREFRESH CACHE C
メンテ
Re: ラスタの回転、輝度 ( No.9 )
日時: 2010/10/07 20:09
名前: nakano10

ご回答ありがとうございます

>DSPREFRESH CACHE C
の後無事に削除することができました。

後出しの質問が続いて恐縮ですが、
回転ラスタを含む範囲を印刷すると、
プリンタドライバから「ディスクがいっぱいで印刷を続行できません。」
のダイアログの直後、GEOSISから、
「Error EndPage [0]一般的なエラーが発生しました」
というダイアログがあらわれます。
(ディスクの空きは数十GBあります)
キ○○ン製プリンタ2種で同一の状況です(他社プリンタはすぐ試せる範囲にはありません)。
印刷先をPDFドライバにすると中身も問題ないPDFが出力されます。
何か対処方法ございましたら御知恵賜りたく存じます。
なお、このときSETDGRPで回転ラスタのグループ一つとベクタのグループ一つを印刷対象にしておりますが、
試しに印刷対象グループを回転ラスタのグループのみに限定しても再現します。
BMPCOPYで出力しADDBMCしている画像は1000x1000dot24bitBMPで約2.5MBです。
メンテ
Re: ラスタの回転、輝度 ( No.10 )
日時: 2010/10/08 11:53
名前: GEOSISサポート


nakano10様

「ディスクがいっぱいで印刷を続行できません。」のエラーは以下の処理を行うことで改善される可能性が御座いますのでお試し下さい。

・プリンタのドライバを最新のものに更新して下さい。

・印刷時に印刷データがWindowsのTEMPフォルダに作成される可能性が御座いますので、TEMPフォルダが格納されているドライブの空きを、
確認して頂き、少ないようでしたら空きを確保して下さい。

・お使いのプリンタのプロパティで印刷データをPCにスプールする設定がありましたら、PCにスプールしてから印刷データをプリンタに送るよう設定して下さい。

以上よろしくお願い致します。
メンテ
Re: ラスタの回転、輝度 ( No.11 )
日時: 2010/10/08 17:24
名前: nakano10

ご回答ありがとうございます。

プリンタドライバの更新により無事出力されました。

このたびは長々とありがとうございました。
メンテ

Page: 1 | 2 |



| 利用規約 |

(C) 2024 AS Locus INC.