Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
inkpictureでdeleteすると、他のstrokeのインデックスなどが配列から無くなります
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30593#CommentId84412
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
snowmansnow
 (社会人)
投稿日時
2021/2/23 20:52:49
魔界の仮面弁士様、大変ありがとうございます。
プリザーブを修正してみましたところ、1回目は動くようになりました。
でも、2回目やってみると、「実行時エラー5。プロシジャーの呼び出し、または引数が不正です」
になってしまいます。(下記の場所)
前回教えてもらった、シート上にストロークデータを記載する。をやってみると、st.idが飛んでいます。
何かリフレッシュみたいに、連番に戻す命令があるのでしょうか?
他に何か理由があるのでしょうか?
よろしくお願いします。
修正版
Private Sub CommandButton37_Click()
Dim myStroke As Object
Dim c As Variant
Dim dels() As Long
ReDim dels(0)
' MsgBox InkPicture2.ink.strokes.Count
For Each myStroke In InkPicture2.ink.strokes
If InkPicture2.ink.strokes(myStroke.id - 1).DrawingAttributes.Color <> 0 Then ・・・ここでエラー
ReDim Preserve dels(UBound(dels) + 1)
dels(UBound(dels) - 1) = myStroke.id
' MsgBox (UBound(dels)) & "-" & dels(UBound(dels) - 1)
Else
End If
Next
InkPicture2.AutoRedraw = True
' MsgBox (UBound(dels))
Dim strokesd As IInkStrokeDisp
Dim strokesToDelete As MSINKAUTLib.InkStrokes
Set strokesToDelete = InkPicture2.ink.CreateStrokes()
For d = (UBound(dels) - 1) To 0 Step -1
' Set strokesd = InkPicture2.ink.strokes(dels(d) - 1)
' MsgBox d & "=" & dels(d)
' InkPicture2.ink.strokes.Remove strokesd
' InkPicture2.ink.DeleteStroke InkPicture2.ink.strokes(30)
InkPicture2.ink.DeleteStroke InkPicture2.ink.strokes(dels(d) - 1)
InkPicture2.AutoRedraw = True
Next
'インクを足す事はできる・・・
'Dim strokes As MSINKAUTLib.InkStrokes
'Set combinedInk = InkPicture2.ink
'Set strokes = InkPicture3.ink.strokes
'iret = combinedInk.AddStrokesAtRectangle(strokes, strokes.GetBoundingBox())
'Set strokes = InkPicture4.ink.strokes
'iret = combinedInk.AddStrokesAtRectangle(strokes, strokes.GetBoundingBox())
'https://microsoft.public.windows.tabletpc.developer.narkive.com/xeodljDK/rendering-ink-from-multiple-inkpictures-in-the-same-form
InkPicture2.AutoRedraw = True
End Sub