이제 WPF로 바꾸어보세요 (12)

시보 기능



일부 노망 문제는 미해결입니다만 메인 기능은 거의 형태가 되어 한점 남는 것이 시보 기능. 지정 시각 또는 매정시에 풍선적인 알림이 표시되는 기능입니다.
이런 녀석↓


보통 Toast 등을 사용할지도 모릅니다만 컴퍼넌트를 모르는 슬픔으로부터, VB+FORMS판에서는 아이 FORM을 작성해 메인측으로부터 지정 시각에 호출해, 아이 FORM측에 별도 설정한 타이머로 투명도를 가산·감산해 페이드 IN · OUT 표현과 표시 시간을 조정했습니다. VB↓
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        'Timer intavalは20?位だったはず
        Me.ticks.Text = CInt(Me.ticks.Text) + 1
        Select Case CInt(Me.ticks.Text)
            Case Is <= 100 
                Me.Opacity += 0.01   '2秒かけてフェードIN
            Case 101 To 300          '4秒間通常表示
            Case 300 To 400          '2秒かけてフェードOUT
                Me.Opacity -= 0.01
            Case Is > 400            '終わったら終わる
                Me.ticks.Text = "0"
                Me.Timer1.Enabled = False
                Me.Hide()
            Case Else
        End Select
        If Me.sec.Text <> Mid(Now.ToString("yyyyMMddHHmmss"), 13, 2) Then
            Call MakeClockImage()  'お知らせ内にアナログ時計描画
            Me.sec.Text = Mid(Now.ToString("yyyyMMddHHmmss"), 13, 2)
        End If
        Me.Refresh()
    End Sub

당초 NotifyIcon용으로 인스톨한 Hardcodet.NotifyIcon에 있는 기능을 사용할까 생각했습니다만, 알림 화면내의 아날로그 시계를 리얼타임으로 움직이고 싶으므로, VB판과 유사한 방법으로 가기로 하겠습니다.

GRIDVIEW의 불행한 점



개별 설정한 시보 정보를 리스트 표시하는 기능으로, FORMS판의 LISTVIEW에서는 보통으로 IMAGELIST를 준비해, AddItem하면 좋은 느낌으로 아이콘을 붙여 등록할 수 있어, 삭제할 때도 마우스 포인터로 영역 선택하는 것으로 단번에 삭제할 수 있었습니다.


WPF판에서는 Gridview를 이용해 XAML측에서 아이콘을 붙여 표시하고 있습니다만 마우스 조작하면 DragMove가 살아 버려 그러한 선택을 할 수 없고, 클릭해의 선택 밖에 할 수 없는 것 같고 약간 유감.


추가 프레데터 문자



DrawLine에서 세그먼트 숫자 그리는 로직, 실수하면 갑자기 프레데터 맛에. 그러고 보니 게임이 나오는거야.

좋은 웹페이지 즐겨찾기