Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
[SerializableAttribute] public sealed class CFviDrawPatternModify : CFviOverlay |
Visual Basic |
---|
<SerializableAttribute> Public NotInheritable Class CFviDrawPatternModify Inherits CFviOverlay |
Remarks
パタン画像のマスク値をマウス操作で編集する為のオーバレイです。 表示対象画像が CFviPattern の時のみ有効です。
初期値と範囲:
プロパティ | 初期値 | 範囲 | 備考 |
---|---|---|---|
Active | false | false/true | マウス操作活性化属性です。 パタン画像のマスク編集を行う際は true です。 表示のみ行う際は false です。 |
Enable | false | false/true | 可視属性です。 編集領域を表す矩形の表示のみを行う際に、上位側のアプリケーションで true に設定してください。 |
Scaling | true | true のみ | 伸縮属性です。 編集領域を表す矩形を画像座標で描画しています。 false にする事は想定していません。 |
ScalingMode | FVIL.GDI.ScalingMode.Center | Center のみ | サブピクセル計算に影響します。 変更するとアクセス違反を起こす可能性がありますので変更しないでください。 |
MaskBit | FVIL.Data.Pattern.MASK |
以下のいずれか 0x01: MASK 0x02: ESSENTIAL 0x03: ALL | 編集対象のマスクビットを示します。 |
MaskCursorMode | FVIL.GDI.MaskCursorMode.Write | Write/Erase | マウスが左クリックされた時に MaskBit に示された値を書き込むか消去するかを示します。 マウスの右クリックで動作が反転します。 |
MaskCursorSize | 1,1 | Width,Height がそれぞれ1 以上 | マスク編集領域を示す矩形のサイズです。 マウスカーソル位置を含む ±MaskCursorSize の範囲が編集対象になります。 |
ColorMask | 赤(R=0xFF, G=0x00, B=0x00) | 有効な色 | マスク部分の編集時のカーソル色を表します。 CFviDisplay クラスの OverlayPatternModify から使用する場合は、 MaskColor と連動します。 |
ColorEssential | 緑(R=0x00, G=0xFF, B=0x00) | 有効な色 | 不可欠部分の編集時のカーソル色を表します。 CFviDisplay クラスの OverlayPatternModify から使用する場合は、 EssentialMaskColor と連動します。 |
このオーバレイで描画される図形は、 下記のように Figures 配列に格納されていますが、 将来的に配列の内容は変更される可能性があります。 この初期化内容に依存したプログラムを作らないようにしてください。 また、この配列をクリアされることを想定していません。
配列の初期化内容:プロパティ | 初期値 | 範囲 | 備考 |
---|---|---|---|
Figures[0] | CFviGdiRectangle | ※インスタンスの差し替えは想定していません。 | 登録位置の矩形を表す図形です。 |
Figures[1] | CFviGdiPoint | ※インスタンスの差し替えは想定していません。 | 基準点を表す図形です。 |
Examples
フォームに貼り付けた CFviImageView を介してパタン編集を行う例を示します。
上図左側の PropertyGrid コントロールには、
CFviImageView の
Display プロパティから取得した
CFviDisplay クラスのインスタンスを表示していますが この処理は任意です。
マスクと不可欠部分の可視属性の設定:
下記サンプルコードの OnLoad 内で、
CFviDisplay クラスの
MaskEnable と
EssentialMaskEnable に true を設定して、
現在表示中のパタン画像のマスクビットを可視化しています。
上図の赤い塗りつぶしがマスク部分、緑の塗りつぶしが不可欠部分です。
これらの色は、
CFviDisplay クラスの
MaskColor と
EssentialMaskColor で変更できます。
パタン編集オーバレイ表示切替:
下記サンプルコードの toolPatternModify_Click 関数内で、このオーバレイの表示切り替えを行っています。
上図のように赤い矩形の枠が表示されます。
パタン編集対象ビット設定:
マウスがクリックされたときに ON/OFF するパタン画像のマスク値を設定します。
下記サンプルコードの以下の関数の処理をご参照ください。
- toolModeMask_Click
- toolModeEssential_Click
- toolModeAll_Click
カーソルサイズの設定:
下記サンプルコードの toolCursorSize_SelectedIndexChanged 関数内で編集領域(上図の赤い矩形の枠)のサイズを設定しています。
マウス位置±MaskCursorSize の範囲が編集対象になります。
カーソル色の設定:
サンプルコードには示していませんが
ColorMask と
ColorEssential で変更できます。
但し、Display プロパティを介して使用する場合は、
MaskColor や
EssentialMaskColor を設定したときに上書きされます。
ソースコード:
C# | Copy |
---|---|
// $Revision: 1.2 $ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace User.SampleCode.GDI { public partial class PatternModifyForm : Form { /// <summary> /// コンストラクタ. /// </summary> public PatternModifyForm() { InitializeComponent(); } /// <summary> /// フォームロード時の初期化処理. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnLoad(object sender, EventArgs e) { // (任意) ImageView.Display プロパティの表示/編集用. propertyGrid1.SelectedObject = ImageView.Display; // 編集対象パタンの読み込み. FVIL.Data.CFviPattern pattern = new FVIL.Data.CFviPattern( Path.Combine(Program.DataDir, "fvc06_UC8_parts.pat") ); // 編集対象パタンの設定. ImageView.Image = pattern; // マスクと不可欠部分の可視属性. (※デザイン時設定も可能) ImageView.Display.MaskEnable = true; ImageView.Display.EssentialMaskEnable = true; // その他の処理. toolCursorSize.SelectedIndex = 0; } /// <summary> /// パタン編集オーバレイ表示切替. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolPatternModify_Click(object sender, EventArgs e) { ImageView.Display.OverlayPatternModify.Active = true; ImageView.Refresh(); } /// <summary> /// パタン編集対象ビット設定 (マスク部分) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolModeMask_Click(object sender, EventArgs e) { ImageView.Display.OverlayPatternModify.MaskBit = FVIL.Data.Pattern.MaskBit.MASK; ImageView.Refresh(); } /// <summary> /// パタン編集対象ビット設定 (不可欠部分) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolModeEssential_Click(object sender, EventArgs e) { ImageView.Display.OverlayPatternModify.MaskBit = FVIL.Data.Pattern.MaskBit.ESSENTIAL; ImageView.Refresh(); } /// <summary> /// パタン編集対象ビット設定 (マスク部分と不可欠部分) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolModeAll_Click(object sender, EventArgs e) { ImageView.Display.OverlayPatternModify.MaskBit = FVIL.Data.Pattern.MaskBit.MASK| FVIL.Data.Pattern.MaskBit.ESSENTIAL; ImageView.Refresh(); } /// <summary> /// カーソルサイズの設定. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolCursorSize_SelectedIndexChanged(object sender, EventArgs e) { try { string[] values = toolCursorSize.SelectedItem.ToString().Split(new char[] { ',' }, 2); Size size = new Size(int.Parse(values[0]), int.Parse(values[1])); ImageView.Display.OverlayPatternModify.MaskCursorSize = size; ImageView.Refresh(); } catch (System.Exception) { } } /// <summary> /// (任意) 画像ビューの表示更新時の処理. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ImageView_Paint(object sender, PaintEventArgs e) { // プロパティグリッドを更新します. propertyGrid1.Refresh(); } /// <summary> /// (任意) プロパティグリッドの値変更時の処理. /// </summary> /// <param name="s"></param> /// <param name="e"></param> private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e) { // 画像ビューを表示更新します. ImageView.Refresh(); } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.ComponentModel Imports System.Data Imports System.Drawing Imports System.Text Imports System.Windows.Forms Imports System.IO Namespace SampleCode.GDI Public Partial Class PatternModifyForm Inherits Form ''' <summary> ''' コンストラクタ. ''' </summary> Public Sub New() InitializeComponent() End Sub ''' <summary> ''' フォームロード時の初期化処理. ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Overloads Sub OnLoad(sender As Object, e As EventArgs) ' (任意) ImageView.Display プロパティの表示/編集用. propertyGrid1.SelectedObject = ImageView.Display ' 編集対象パタンの読み込み. Dim pattern As New FVIL.Data.CFviPattern(Path.Combine(Program.DataDir, "fvc06_UC8_parts.pat")) ' 編集対象パタンの設定. ImageView.Image = pattern ' マスクと不可欠部分の可視属性. (※デザイン時設定も可能) ImageView.Display.MaskEnable = True ImageView.Display.EssentialMaskEnable = True ' その他の処理. toolCursorSize.SelectedIndex = 0 End Sub ''' <summary> ''' パタン編集オーバレイ表示切替. ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub toolPatternModify_Click(sender As Object, e As EventArgs) ImageView.Display.OverlayPatternModify.Active = True ImageView.Refresh() End Sub ''' <summary> ''' パタン編集対象ビット設定 (マスク部分) ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub toolModeMask_Click(sender As Object, e As EventArgs) ImageView.Display.OverlayPatternModify.MaskBit = FVIL.Data.Pattern.MaskBit.MASK ImageView.Refresh() End Sub ''' <summary> ''' パタン編集対象ビット設定 (不可欠部分) ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub toolModeEssential_Click(sender As Object, e As EventArgs) ImageView.Display.OverlayPatternModify.MaskBit = FVIL.Data.Pattern.MaskBit.ESSENTIAL ImageView.Refresh() End Sub ''' <summary> ''' パタン編集対象ビット設定 (マスク部分と不可欠部分) ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub toolModeAll_Click(sender As Object, e As EventArgs) ImageView.Display.OverlayPatternModify.MaskBit = FVIL.Data.Pattern.MaskBit.MASK Or FVIL.Data.Pattern.MaskBit.ESSENTIAL ImageView.Refresh() End Sub ''' <summary> ''' カーソルサイズの設定. ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub toolCursorSize_SelectedIndexChanged(sender As Object, e As EventArgs) Try Dim values As String() = toolCursorSize.SelectedItem.ToString().Split(New Char() {","C}, 2) Dim size As New Size(Integer.Parse(values(0)), Integer.Parse(values(1))) ImageView.Display.OverlayPatternModify.MaskCursorSize = size ImageView.Refresh() Catch generatedExceptionName As System.Exception End Try End Sub ''' <summary> ''' (任意) 画像ビューの表示更新時の処理. ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub ImageView_Paint(sender As Object, e As PaintEventArgs) ' プロパティグリッドを更新します. propertyGrid1.Refresh() End Sub ''' <summary> ''' (任意) プロパティグリッドの値変更時の処理. ''' </summary> ''' <param name="s"></param> ''' <param name="e"></param> Private Sub propertyGrid1_PropertyValueChanged(s As Object, e As PropertyValueChangedEventArgs) ' 画像ビューを表示更新します. ImageView.Refresh() End Sub End Class End Namespace |
Inheritance Hierarchy
FVIL..::..CFviObject
FVIL.GDI..::..CFviOverlay
FVIL.GDI..::..CFviDrawPatternModify