第1回 画像の裏を表示する 2

本文介绍如何在Blend4中创建StoryBoard,并详细说明了创建ImageFrontToBackStoryboard的过程,包括设置对象属性和时间线的关键帧。

Blend4でのStoryboardの作成

「オブジェクトとタイムライン(B)」の下にあるストーリーボードの「新規作成」アイコン(+)をクリックします(図5)。

図5:「新規作成」アイコンをクリックする

ImageFrontToBackStoryboard(表の画像が回転して裏が表示されるストーリーボード)の作成

「Storyboardリソースの作成」ダイアログボックスが開きますので、「名前(キー)」にImageFrontToBackStoryboardと入力して[OK]ボタンをクリックします(図6)。アートボード上の画面全体が赤の枠線で囲まれ、「●ImageFrontToBackStoryboardタイムライン記録オン」に変わります。この状態でタイムラインの記録が可能になります(図7)。

図6:「名前(キー)」にImageFrontToBackStoryboardと入力する

図7:アートボード上の画面全体が赤の枠線で囲まれタイムラインの記録が可能になる(クリックで拡大)

まず、「タイムラインとオブジェクト(B)」内のImageBorderとBackBorderを展開して要素を全て表示させておきます(図8)。

図8:「オブジェクトとタイムライン(B)」内のImageBorderとBackBorderを展開して要素を全て表示させておく

これから以下の作業は、再生ヘッドの位置に応じて、各プロパティの値を設定する作業となります。これらのプロパティ値は、後ほど紹介する、表1にまとめていますので、そちらを参考に値を設定してもかまいません。

「オブジェクトとタイムライン(B)」内のImageBorder(菜の花画像の表示されている表)を選択し、黄色の再生ヘッドが0の位置で、プロパティのVisibilityの値を、既にVisibleになっていますが、一度Collapsedを選択して、再度Visibleを選択します。すると「タイムラインとオブジェクト(B)」のImageBorder内にVisibilityが追加され、再生ヘッドが0の位置に楕円のマークが追加されます。

同様に、プロパティの[変換]を展開して表示されるProjectionの「回転」のYの値に、既に0と入力されていますが、再度、上書きで0と入力します。すると、「タイムラインとオブジェクト(B)」のImageBorder内にProjectionが追加され、再生ヘッドが0の位置に楕円のマークが追加されます。Projectionを展開するとRotationYが追加されているのがわかります。

次に、黄色の再生ヘッドが0の位置でBackBorder(黒の画像の表示されている裏)を選択します。プロパティのVisibilityの値を、既にCollapsedになっていますが、一度Visibilityを選択して、再度Collapsedを選択します。すると「タイムラインとオブジェクト(B)」のBackBorder内にVisibilityが追加され、再生ヘッドが0の位置に楕円のマークが追加されます。

同様に、プロパティの[変換]を展開して表示されるProjectionの「回転」Yの値に、180と入力します。すると、タイムラインとオブジェクト(B)」のBackBorder内にProjectionが追加され、再生ヘッドが0の位置に楕円のマークが追加されます。Projectionを展開するとRotationYが追加されているのがわかります(図9)。

BackBorderは初期状態ではVisibilityがCollapsedに設定されて非表示となっていますので、ProjectionのYに180を設定した時の画像の状態がわかりません。確認するため、一時的にVisibilityをVisibleに変更して画像の状態を見てみましょう。図10のように裏面となる画像が反転しているのがわかります。最初に反転させておいてから再生ヘッドが0.5の位置でProjectionの「回転」のYの値を90に設定し、再生ヘッドが1の位置で0に戻すようにします。これで、正常な裏面が表示されるようになります。これらの手順は後ほど紹介する表1にまとめています。

一時的にVisibleにした値をCollapsedに戻しておきましょう。

図9:「オブジェクトとタイムライン(B)」内のImageBorderとBackBorderの再生ヘッドが0の位置でのタイムラインを設定した

図10:BackBorderのVisibilityの値を一時的にVisibleにし、ProjectionのYの値を180に指定した画像を確認する。裏面となる画像とボタンが反転している

次に再生ヘッドを0.5の位置に移動し、ImageBorderを選択します。この0.5秒の位置で、表向きの画像と、裏向きの画像が入れ替わります。VisibilityにCollapsedを指定し、[変換]プロパティ内のProjectionのYに-90と指定します。

BackBorderを選択し、再生ヘッドが0.5の位置で、VisibilityにVisible、[変換]プロパティ内のProjectionの「回転」のYの値に、90を指定します。

次に再生ヘッドを1の位置に移動し、ImageBorderを選択します。VisibilityにCollapsedを指定し、[変換]プロパティ内のProjectionの「回転」のYに-180と指定します。

BackBorderを選択し、再生ヘッドを1の位置で、VisibilityにVisible、[変換]プロパティ内のProjectionの「回転」のYの値に、0を指定します。以上の操作手順をまとめると表1のようになります。

表1 ImageFrontToBackStoryboard(表から裏に回転する場合の値)
オブジェクト名プロパティ名再生ヘッドの位置(秒)
ImageBorder 00.51
VisibilityVisibleCollapsedCollapsed
Projection(回転のY)0-90-180
BackBorderVisibilityCollapsedVisibleVisible
Projection(回転のY)180900

「●ImageFrontToBackStortboardタイムライン記録オン」の●をクリックして記録オフにします。タイムラインのツールバーから「先頭のフレームに移動」アイコンをクリックして、「再生」を実行してみてください。表の画像が反転して裏の画像とボタンが表示されます。

全て設定すると図11のようになります。

図11:ImageFrontToBackStoryboardの設定を全て完了した(クリックで拡大)

解析文本数据 処理す差分総数:2 現在処理進捗:1/2 変更前仕様書内容分析 時間がかか:9.38s 変更後仕様書内容分析する 時間がかか:8.70s 変更前後仕様書差異抽出する 時間がかか:3.38s AIが差異点背景情報理解する 時間がかか:0.00s AIが需要点判定行う正在处理AI判定1/1時間がかか:328.58s 差分解析結果SCLファイルに書き込む已完成批次 1/1,時間がかか:8.84s 処理完了:1/2 現在処理進捗:2/2 テンプレートに一致せず、デフォルトテンプレートが使用されています 変更前仕様書内容分析 時間がかか:4.68s 変更後仕様書内容分析する 時間がかか:4.73s 変更前後仕様書差異抽出する 時間がかか:0.34s AIが差異点背景情報理解する 時間がかか:0.00s AIが需要点判定行う正在处理AI判定1/1時間がかか:76.83s 差分解析結果SCLファイルに書き込む已完成批次 1/1,時間がかか:7.18s 処理完了:2/2 完了した仕様差分: 合計 2,成功 2,失敗 0 結果詳細: SCL_MET-B_SEAREM-CSTD-1-XX-X-C7-575D-A.xlsx 総差分数 35 テキスト差分数 0 表差分数 32 画像差分数 0 グラフィック差分数 3 変更前解析結果 変更後解析結果 差分結果 SCL_MET-G_SETTING-CSTD-0-XX-X-C7-305D-a.xlsx 総差分数 25 テキスト差分数 2差分数 23 画像差分数 0 グラフィック差分数 0 比如我输入这一段消息 那我的输出应该是SCL_MET-B_SEAREM-CSTD-1-XX-X-C7-575D-A.xlsx机器差分耗时为:(第一个时间段相加) SCL_MET-G_SETTING-CSTD-0-XX-X-C7-305D-a.xlsx机器差分耗时为:(第二个时间段相加) 耗时的单位是h不是s
09-09
我的需求: 1、界面上传文本,解析那一段文本,根据文件名分块打印固定格式的时间输出,单位是h 输入的格式一般为:処理す差分総数:2 現在処理進捗:1/2 変更前仕様書内容分析 時間がかか:9.38s 変更後仕様書内容分析する 時間がかか:8.70s 変更前後仕様書差異抽出する 時間がかか:3.38s AIが差異点背景情報理解する 時間がかか:0.00s AIが需要点判定行う正在处理AI判定1/1時間がかか:328.58s 差分解析結果SCLファイルに書き込む已完成批次 1/1,時間がかか:8.84s 処理完了:1/2 現在処理進捗:2/2 テンプレートに一致せず、デフォルトテンプレートが使用されています 変更前仕様書内容分析 時間がかか:4.68s 変更後仕様書内容分析する 時間がかか:4.73s 変更前後仕様書差異抽出する 時間がかか:0.34s AIが差異点背景情報理解する 時間がかか:0.00s AIが需要点判定行う正在处理AI判定1/1時間がかか:76.83s 差分解析結果SCLファイルに書き込む已完成批次 1/1,時間がかか:7.18s 処理完了:2/2 完了した仕様差分: 合計 2,成功 2,失敗 0 結果詳細: SCL_MET-B_SEAREM-CSTD-1-XX-X-C7-575D-A.xlsx 総差分数 35 テキスト差分数 0 表差分数 32 画像差分数 0 グラフィック差分数 3 変更前解析結果 変更後解析結果 差分結果 SCL_MET-G_SETTING-CSTD-0-XX-X-C7-305D-a.xlsx 総差分数 25 テキスト差分数 2差分数 23 画像差分数 0 グラフィック差分数 0 変更前解析結果 変更後解析結果 差分結果 那我的输出应该是SCL_MET-B_SEAREM-CSTD-1-XX-X-C7-575D-A.xlsx机器差分耗时为:(第一个时间段相加) SCL_MET-G_SETTING-CSTD-0-XX-X-C7-305D-a.xlsx机器差分耗时为:(第二个时间段相加) 2、做一个可手动修改的计时器,如果能自动识别到打开SCL_xxx文件持续到关闭,自动输出时间差就更好了
09-09
fun onConfirm(filePathParam: String) { JafCommonLog.start(::onConfirm) val jAFRSHO32020UiStateData: JAFRSHO32020UiStateData = getCurrentData() ?: JAFRSHO32020UiStateData() // ファイルパスから元画像読み込む。 val imgConfirmationInjuryTmp: Bitmap = BitmapFactory.decodeFile(file.absolutePath) ?: return // 元画像と同じサイズ新しい画像作成します。 val resultBitmapTmp: Bitmap = createBitmap(imgConfirmationInjuryTmp.width, imgConfirmationInjuryTmp.height) // Canvasオブジェクト生成す。 val canvas = Canvas(resultBitmapTmp) // 元画像新しい画像キャンバスに描画す。 canvas.drawBitmap(imgConfirmationInjuryTmp, 0f, 0f, null) // 画面描画す。 val displayMetrics = Resources.getSystem().displayMetrics handDrawnLineMemory = jAFRSHO32020UiStateData.handDrawnLineMemory for (lineDataTmp in handDrawnLineMemory) { val paintTmp: Paint = Paint().apply { color = lineDataTmp.color.toColorInt() strokeWidth = lineDataTmp.width.toFloat() // width(線太さ) // 描画スタイルアウトラインに設定す(線だけ描き、塗りつぶさない) style = Paint.Style.STROKE } // 各手描き線順に描画す if (lineDataTmp.point.size > 1) { val path = Path() path.moveTo(lineDataTmp.point.first().first, lineDataTmp.point.first().second) // 各座標点順に接続す for (point in lineDataTmp.point) { path.lineTo( point.first, point.second ) } canvas.drawPath(path, paintTmp) } } // ファイル保存場所確認す val saveFileTmp: File = if (File(filePathParam).exists()) { // 内部変数.saveFileTmp(画像保存パス)引数.filePathParam(画像ファイルパス)に保存す。 File(filePathParam) } else { // 内部変数.saveFileTmp(画像保存パス)コビーし、ファイル名handpaint.jpgという名前に変更し、 // 引数.filePathParam(画像ファイルパス)に保存す。 File("ET45/Android/JAFRS/SharyoGyomu/Image/Damage/", "handpaint.jpg") } // 画像指定したファイルに保存す。 FileOutputStream(saveFileTmp).use { outputStream -> resultBitmapTmp.compress(Bitmap.CompressFormat.JPEG, 90, outputStream) } setSuccess(jAFRSHO32020UiStateData) // ビットマップリソース解放し、メモリリーク防ぐ resultBitmapTmp.recycle() imgConfirmationInjuryTmp.recycle() // 保管承諾書_傷等確認事項入力ポップアップ画面閉じ。 navigateBack() JafCommonLog.stop(::onConfirm) } 上面是改完之后的 你提供的是 path.moveTo(firstPoint.first, firstPoint.second) 应该是path.moveTo(lineDataTmp.point.first().first, lineDataTmp.point.first().second)吧 而且 val displayMetrics = Resources.getSystem().displayMetrics是不是可以删掉了
最新发布
01-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值