├── .all-contributorsrc
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.yml
│ ├── config.yml
│ └── feature_request.yml
└── workflows
│ └── dotnet-desktop.yml
├── .gitignore
├── .idea
└── .idea.Ink Canvas
│ └── .idea
│ ├── .gitignore
│ ├── .name
│ ├── encodings.xml
│ ├── indexLayout.xml
│ └── vcs.xml
├── .vs
├── Ink Canvas
│ ├── CopilotIndices
│ │ └── 17.14.698.11175
│ │ │ ├── CodeChunks.db
│ │ │ └── SemanticSymbols.db
│ ├── DesignTimeBuild
│ │ └── .dtbcache.v2
│ └── v17
│ │ ├── .futdcache.v2
│ │ ├── .suo
│ │ ├── DocumentLayout.backup.json
│ │ └── DocumentLayout.json
├── ProjectEvaluation
│ ├── ink canvas.metadata.v9.bin
│ ├── ink canvas.projects.v9.bin
│ └── ink canvas.strings.v9.bin
├── VSWorkspaceState.json
├── icc-0610.2.2
│ ├── FileContentIndex
│ │ ├── 777fbe68-06ce-4859-8b8d-d763f120f2c0.vsidx
│ │ └── 95c8e0b1-8689-4e23-84a6-a09fc53d1455.vsidx
│ └── v17
│ │ ├── .wsuo
│ │ ├── DocumentLayout.backup.json
│ │ ├── DocumentLayout.json
│ │ └── workspaceFileList.bin
├── icc-0610.2.3
│ ├── FileContentIndex
│ │ ├── 29319a2c-7faa-4ee5-8d24-17c238ca803e.vsidx
│ │ ├── 34c6dd5d-6075-49b2-ab2c-4e8d079d036e.vsidx
│ │ ├── 7a5efc25-7ca5-4a7f-a0e0-0e8bf3996d0a.vsidx
│ │ ├── 9947b71c-9e8d-4a20-80aa-4e44b1609bf2.vsidx
│ │ └── e1d7dcd2-b73f-4c9a-b51c-9ba3cb8d4cbb.vsidx
│ └── v17
│ │ ├── .wsuo
│ │ ├── DocumentLayout.backup.json
│ │ ├── DocumentLayout.json
│ │ └── workspaceFileList.bin
└── slnx.sqlite
├── AutomaticUpdateVersionControl.txt
├── CODE_OF_CONDUCT.md
├── Images
└── icc ce.png
├── Ink Canvas.sln
├── Ink Canvas.sln.DotSettings.user
├── Ink Canvas
├── App.config
├── App.xaml
├── App.xaml.cs
├── AssemblyInfo.cs
├── Helpers
│ ├── AnimationsHelper.cs
│ ├── AutoUpdateHelper.cs
│ ├── AvoidFullScreenHelper.cs
│ ├── Converters.cs
│ ├── DelAutoSavedFiles.cs
│ ├── DelayActionHelper.cs
│ ├── EdgeGestureUtil.cs
│ ├── ForegroundWindowInfo.cs
│ ├── FullScreenHelper.Win32.cs
│ ├── FullScreenHelper.cs
│ ├── Hotkey.cs
│ ├── InkRecognizeHelper.cs
│ ├── IsOutsideOfScreenHelper.cs
│ ├── LogHelper.cs
│ ├── MultiTouchInput.cs
│ ├── SoftwareLauncher.cs
│ ├── StartupCount.cs
│ ├── TimeMachine.cs
│ └── WinTabWindowsChecker.cs
├── IACore.dll
├── IALoader.dll
├── IAWinFX.dll
├── InkCanvasForClass.csproj
├── InkCanvasForClass.csproj.user
├── InkCanvasForClass_mlbp2gn0_wpftmp.csproj
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── MainWindow_cs
│ ├── ConfigHelper.cs
│ ├── MW_AutoFold.cs
│ ├── MW_AutoStart.cs
│ ├── MW_AutoTheme.cs
│ ├── MW_BoardControls.cs
│ ├── MW_BoardIcons.cs
│ ├── MW_Colors.cs
│ ├── MW_FloatingBarIcons.cs
│ ├── MW_Hotkeys.cs
│ ├── MW_Icons.cs
│ ├── MW_Notification.cs
│ ├── MW_PPT.cs
│ ├── MW_PageListView.cs
│ ├── MW_Save&OpenStrokes.cs
│ ├── MW_Screenshot.cs
│ ├── MW_SelectionGestures.cs
│ ├── MW_Settings.cs
│ ├── MW_SettingsToLoad.cs
│ ├── MW_ShapeDrawing.cs
│ ├── MW_SimulatePressure&InkToShape.cs
│ ├── MW_TimeMachine.cs
│ ├── MW_Timer.cs
│ ├── MW_TouchEvents.cs
│ └── MW_TrayIcon.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── PublishProfiles
│ │ ├── FolderProfile.pubxml
│ │ └── FolderProfile.pubxml.user
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Resources
│ ├── ChickenSoup.cs
│ ├── Cursors
│ │ ├── Cursor.cur
│ │ └── Pen.cur
│ ├── DeveloperAvatars
│ │ ├── Alan-CRL.png
│ │ ├── CN-Ironegg.jpg
│ │ ├── ChangSakura.png
│ │ ├── NetheriteBowl.png
│ │ ├── NotYoojun.png
│ │ ├── RaspberryKan.jpg
│ │ ├── STBBRD.png
│ │ ├── WXRIW.png
│ │ ├── aaaaaaccd.jpg
│ │ ├── clover-yan.png
│ │ ├── dubi906w.jpg
│ │ ├── jiajiaxd.jpg
│ │ ├── kengwang.png
│ │ ├── wwei.png
│ │ └── yuwenhui2020.png
│ ├── DrawShapeImageDictionary.xaml
│ ├── IconImageDictionary.xaml
│ ├── Icons-Fluent
│ │ ├── ic_fluent_add_circle_24_regular.png
│ │ ├── ic_fluent_arrow_circle_left_24_regular.png
│ │ ├── ic_fluent_arrow_circle_right_24_regular.png
│ │ ├── ic_fluent_arrow_clockwise_24_regular.png
│ │ ├── ic_fluent_arrow_rotate_clockwise_24_regular.png
│ │ ├── ic_fluent_book_question_mark_24_regular.png
│ │ ├── ic_fluent_calendar_sync_24_regular.png
│ │ ├── ic_fluent_camera_24_regular.png
│ │ ├── ic_fluent_clock_24_regular.png
│ │ ├── ic_fluent_control_button_24_regular.png
│ │ ├── ic_fluent_copy_24_regular.png
│ │ ├── ic_fluent_copy_add_24_regular.png
│ │ ├── ic_fluent_cursorWITHdelete_24_regular.png
│ │ ├── ic_fluent_cursor_24_regular.png
│ │ ├── ic_fluent_dark_theme_24_regular.png
│ │ ├── ic_fluent_delete_24_regular.png
│ │ ├── ic_fluent_dismiss_circle_24_regular.png
│ │ ├── ic_fluent_drag_24_regular.png
│ │ ├── ic_fluent_dual_screen_span_24_regular.png
│ │ ├── ic_fluent_edit_24_regular.png
│ │ ├── ic_fluent_flip_horizontal_24_regular.png
│ │ ├── ic_fluent_flip_vertical_24_regular.png
│ │ ├── ic_fluent_folder_open_24_regular.png
│ │ ├── ic_fluent_keyboard_24_regular.png
│ │ ├── ic_fluent_lasso_24_regular.png
│ │ ├── ic_fluent_people_24_regular.png
│ │ ├── ic_fluent_people_money_24_regular.png
│ │ ├── ic_fluent_person_money_24_regular.png
│ │ ├── ic_fluent_power_24_regular.png
│ │ ├── ic_fluent_save_24_regular.png
│ │ ├── ic_fluent_scale_fit_24_regular.png
│ │ ├── ic_fluent_scales_24_regular.png
│ │ ├── ic_fluent_settings_24_regular.png
│ │ ├── ic_fluent_shapes_24_regular.png
│ │ ├── ic_fluent_signature_24_regular.png
│ │ ├── ic_fluent_timer_24_regular.png
│ │ ├── ic_fluent_weather_moon_24_regular.png
│ │ ├── ic_fluent_weather_sunny_24_regular.png
│ │ ├── ic_fluent_whiteboard_24_regular.png
│ │ └── party.png
│ ├── Icons-png
│ │ ├── AdmoxBooth.png
│ │ ├── AdmoxWhiteboard.png
│ │ ├── Desmos.png
│ │ ├── Donview.png
│ │ ├── EasiCamera.png
│ │ ├── EasiNote.png
│ │ ├── EasiNote3.png
│ │ ├── EasiNote3C.png
│ │ ├── EasiNote5C.png
│ │ ├── HiteAnnotation.png
│ │ ├── HiteBoard.png
│ │ ├── HiteCamera.png
│ │ ├── HiteLightBoard.png
│ │ ├── InkCanvas.png
│ │ ├── MaxHubWhiteboard.png
│ │ ├── PPTTools.png
│ │ ├── Powerpoint.png
│ │ ├── Seewo2Annotation.png
│ │ ├── SeewoPinco.png
│ │ ├── VComYouJiao.png
│ │ ├── WPS.png
│ │ ├── WenXiang.png
│ │ ├── Whiteboard.png
│ │ ├── YiYunVisualPresenter.png
│ │ ├── YiYunWhiteboard.png
│ │ ├── check-box-background.png
│ │ ├── close-circle.png
│ │ ├── down.png
│ │ ├── eraser-line.png
│ │ ├── eraser-outline.png
│ │ ├── geo-icons
│ │ │ ├── arrow.png
│ │ │ ├── centered-circle-dashed.png
│ │ │ ├── centered-circle.png
│ │ │ ├── centered-oval.png
│ │ │ ├── centered-square.png
│ │ │ ├── cone.png
│ │ │ ├── cube.png
│ │ │ ├── cylinder.png
│ │ │ ├── dashed-line.png
│ │ │ ├── dotted-line.png
│ │ │ ├── line.png
│ │ │ ├── paralle-lines.png
│ │ │ └── square.png
│ │ ├── ica.png
│ │ ├── icc-transparent-dark-small.png
│ │ ├── icc-transparent-dark.png
│ │ ├── icc-transparent.png
│ │ ├── icc.png
│ │ ├── idt.png
│ │ ├── kuanciya.png
│ │ ├── kuandogeyuanliangwo.png
│ │ ├── kuandoujiyanhuaji.png
│ │ ├── kuanneikuhuaji.png
│ │ ├── kuanshounvhuaji.png
│ │ ├── menu-back-highlighted.png
│ │ ├── menu-back.png
│ │ ├── minimize.png
│ │ ├── penUpright.png
│ │ ├── playCircle.png
│ │ ├── pressdown-background.png
│ │ ├── redo.png
│ │ ├── setting.png
│ │ ├── tiebahuaji.png
│ │ ├── transparent-grid.png
│ │ ├── twoFingelMove-Blue.png
│ │ ├── twoFingelMove.png
│ │ ├── undo.png
│ │ └── up.png
│ ├── Icons
│ │ ├── DrawShapeIcon.ai
│ │ ├── DrawShapeIcon.svg
│ │ ├── Flip.ai
│ │ ├── Flip.svg
│ │ ├── Rotate.ai
│ │ ├── Rotate.svg
│ │ ├── Rotate45.svg
│ │ ├── Rotate90.svg
│ │ ├── ShapeArrowLine.ai
│ │ ├── ShapeArrowLine.svg
│ │ ├── ShapeCircle.ai
│ │ ├── ShapeCircle.svg
│ │ ├── ShapeCone.ai
│ │ ├── ShapeCone.svg
│ │ ├── ShapeCoordinate1.ai
│ │ ├── ShapeCoordinate1.svg
│ │ ├── ShapeCoordinate2.ai
│ │ ├── ShapeCoordinate2.svg
│ │ ├── ShapeCoordinate3.ai
│ │ ├── ShapeCoordinate3.svg
│ │ ├── ShapeCoordinate4.ai
│ │ ├── ShapeCoordinate4.svg
│ │ ├── ShapeCoordinate5.ai
│ │ ├── ShapeCoordinate5.svg
│ │ ├── ShapeCuboid.ai
│ │ ├── ShapeCuboid.svg
│ │ ├── ShapeCylinder.ai
│ │ ├── ShapeCylinder.svg
│ │ ├── ShapeDashedCircle.ai
│ │ ├── ShapeDashedCircle.svg
│ │ ├── ShapeDashedLine.ai
│ │ ├── ShapeDashedLine.svg
│ │ ├── ShapeDotLine.ai
│ │ ├── ShapeDotLine.svg
│ │ ├── ShapeEllipse.ai
│ │ ├── ShapeEllipse.svg
│ │ ├── ShapeEllipseCenter.ai
│ │ ├── ShapeEllipseCenter.svg
│ │ ├── ShapeEllipseCenterWithFocalPoint.ai
│ │ ├── ShapeEllipseCenterWithFocalPoint.svg
│ │ ├── ShapeHyperbola.ai
│ │ ├── ShapeHyperbola.svg
│ │ ├── ShapeHyperbolaWithFocalPoint.ai
│ │ ├── ShapeHyperbolaWithFocalPoint.svg
│ │ ├── ShapeLine.ai
│ │ ├── ShapeLine.svg
│ │ ├── ShapeParabola.ai
│ │ ├── ShapeParabola.svg
│ │ ├── ShapeParabolaWithFocalPoint.ai
│ │ ├── ShapeParabolaWithFocalPoint.svg
│ │ ├── ShapeParallelLine.ai
│ │ ├── ShapeParallelLine.svg
│ │ ├── ShapeRectangle.ai
│ │ ├── ShapeRectangle.svg
│ │ ├── ShapeRectangleCenter.ai
│ │ ├── ShapeRectangleCenter.svg
│ │ ├── ShapeTetrahedron.ai
│ │ └── ShapeTetrahedron.svg
│ ├── PresentationExample
│ │ ├── bottombar-dark.png
│ │ ├── bottombar-white.png
│ │ ├── page.jpg
│ │ ├── sidebar-dark.png
│ │ ├── sidebar-white.png
│ │ └── toolbar.png
│ ├── SeewoImageDictionary.xaml
│ ├── Settings.cs
│ ├── Styles
│ │ ├── Dark.xaml
│ │ └── Light.xaml
│ ├── TimerDownNotice.wav
│ ├── hatsune-miku1.png
│ ├── icc.ico
│ └── new-icons
│ │ ├── blackboard.png
│ │ ├── checked-black.png
│ │ ├── checked-white.png
│ │ ├── chevron-left.png
│ │ ├── circle-eraser-lined.png
│ │ ├── circle-eraser-solid.png
│ │ ├── close-white.png
│ │ ├── cursor-clear.png
│ │ ├── cursor-lined.png
│ │ ├── cursor-solid.png
│ │ ├── end-slides-show.png
│ │ ├── eraser-lined.png
│ │ ├── eraser-solid.png
│ │ ├── eye-off.png
│ │ ├── eye.png
│ │ ├── gesture-enabled.png
│ │ ├── gesture.png
│ │ ├── grid.png
│ │ ├── hand-move.png
│ │ ├── highlighter-white.png
│ │ ├── lasso-select-lined.png
│ │ ├── lasso-select-solid.png
│ │ ├── multi-touch.png
│ │ ├── osu-lazer-triangles.png
│ │ ├── pen-lined.png
│ │ ├── pen-solid.png
│ │ ├── pen-white.png
│ │ ├── redo.png
│ │ ├── rotate.png
│ │ ├── shapes.png
│ │ ├── trash.png
│ │ ├── undo.png
│ │ ├── unfold-chevron.png
│ │ └── zoom.png
├── Windows
│ ├── CountdownTimerWindow.xaml
│ ├── CountdownTimerWindow.xaml.cs
│ ├── CycleProcessBar.xaml
│ ├── CycleProcessBar.xaml.cs
│ ├── HasNewUpdateWindow.xaml
│ ├── HasNewUpdateWindow.xaml.cs
│ ├── NamesInputWindow.xaml
│ ├── NamesInputWindow.xaml.cs
│ ├── OperatingGuideWindow.xaml
│ ├── OperatingGuideWindow.xaml.cs
│ ├── RandWindow.xaml
│ ├── RandWindow.xaml.cs
│ ├── YesOrNoNotificationWindow.xaml
│ └── YesOrNoNotificationWindow.xaml.cs
└── app.manifest
├── LICENSE
├── Manual.md
├── README.md
├── UpdateLog.md
├── icc.png
└── privacy.txt
/.all-contributorsrc:
--------------------------------------------------------------------------------
1 | {
2 | "projectName": "community",
3 | "projectOwner": "InkCanvasForClass",
4 | "files": [
5 | "README.md"
6 | ],
7 | "commitType": "docs",
8 | "commitConvention": "angular",
9 | "contributorsPerLine": 7,
10 | "contributors": [
11 | {
12 | "login": "CJKmkp",
13 | "name": "CJK_mkp",
14 | "avatar_url": "https://avatars.githubusercontent.com/u/113243675?v=4",
15 | "profile": "https://github.com/CJKmkp",
16 | "contributions": [
17 | "maintenance",
18 | "doc"
19 | ]
20 | },
21 | {
22 | "login": "Hydro11451",
23 | "name": "Hydrogen",
24 | "avatar_url": "https://avatars.githubusercontent.com/u/214308559?v=4",
25 | "profile": "https://github.com/Hydro11451",
26 | "contributions": [
27 | "maintenance",
28 | "doc"
29 | ]
30 | }
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.yml:
--------------------------------------------------------------------------------
1 | name: Bug 报告 | Bug Report
2 | description: 反馈软件缺陷或异常 | Report a bug to help us improve
3 | labels: [bug]
4 | body:
5 | - type: markdown
6 | attributes:
7 | value: |
8 | 感谢你的反馈!请详细填写以下内容,便于我们定位问题。
9 | Thank you for your feedback! Please fill out the following information to help us locate the issue.
10 | - type: input
11 | id: version
12 | attributes:
13 | label: 软件版本 | App Version
14 | description: 可在设置中的“关于”界面查看 | You can find it on the "About" interface in the settings
15 | placeholder: 例如 v1.2.3 | e.g. v1.2.3
16 | validations:
17 | required: true
18 | - type: input
19 | id: os
20 | attributes:
21 | label: 操作系统及版本 | OS & Version
22 | placeholder: 例如 Windows 10 22H2 64位 | e.g. Windows 10 22H2 64bit
23 | validations:
24 | required: true
25 | - type: textarea
26 | id: description
27 | attributes:
28 | label: 问题描述 | Description
29 | description: 简要描述遇到的问题 | Briefly describe the problem
30 | validations:
31 | required: true
32 | - type: textarea
33 | id: steps
34 | attributes:
35 | label: 复现步骤 | Steps to Reproduce
36 | description: 如何复现该问题?如有必要可附截图/录屏 | How to reproduce this bug? Screenshots/recordings if needed
37 | placeholder: |
38 | 1.
39 | 2.
40 | 3.
41 | validations:
42 | required: false
43 | - type: textarea
44 | id: expected
45 | attributes:
46 | label: 期望结果 | Expected Behavior
47 | description: 你期望的正确行为或结果 | What did you expect to happen?
48 | validations:
49 | required: false
50 | - type: textarea
51 | id: extra
52 | attributes:
53 | label: 其他补充信息 | Additional Info
54 | description: 其他相关信息(如日志、配置、特殊环境等)| Any other context, logs, configs, special environment, etc.
55 | validations:
56 | required: false
57 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.yml:
--------------------------------------------------------------------------------
1 | name: 功能请求 | Feature Request
2 | description: 提出你对本项目的功能建议 | Suggest an idea for this project
3 | labels: [enhancement]
4 | body:
5 | - type: markdown
6 | attributes:
7 | value: |
8 | 感谢你的建议!请详细描述你的需求。
9 | Thank you for your suggestion! Please describe your needs in detail.
10 | - type: textarea
11 | id: description
12 | attributes:
13 | label: 功能描述 | Description
14 | description: 请描述你希望添加的功能 | Describe the feature you want
15 | validations:
16 | required: true
17 | - type: textarea
18 | id: motivation
19 | attributes:
20 | label: 需求动机 | Motivation
21 | description: 为什么需要这个功能?| Why do you need this feature?
22 | validations:
23 | required: false
24 | - type: textarea
25 | id: design
26 | attributes:
27 | label: 期望设计 | Expected Design
28 | description: (可选)描述或画出你期望的界面或交互 | (Optional) Describe or sketch the expected UI/UX
29 | validations:
30 | required: false
31 | - type: textarea
32 | id: extra
33 | attributes:
34 | label: 其他补充信息 | Additional Info
35 | description: 其他补充说明或建议 | Any other context or suggestions
36 | validations:
37 | required: false
38 |
--------------------------------------------------------------------------------
/.github/workflows/dotnet-desktop.yml:
--------------------------------------------------------------------------------
1 | name: .NET Build
2 |
3 | on:
4 | push:
5 | branches: [ main,beta ]
6 | pull_request:
7 | branches: [ main ]
8 |
9 | jobs:
10 |
11 | build:
12 | runs-on: windows-latest
13 |
14 | steps:
15 | - uses: actions/checkout@v4.2.2
16 |
17 | - name: Setup MSbuild
18 | uses: microsoft/setup-msbuild@v2
19 |
20 | - name: Setup NuGet
21 | uses: NuGet/setup-nuget@v2.0.1
22 |
23 | - name: Restore NuGet Packages
24 | run: nuget restore "Ink Canvas.sln"
25 |
26 | - name: Build the Solution
27 | run: |
28 | msbuild -t:restore /p:GitFlow="Github Action"
29 | msbuild /p:platform="Any CPU" /p:configuration="Release" /p:GitFlow="Github Action" "Ink Canvas/InkCanvasForClass.csproj"
30 |
31 | - name: Upload to artifact
32 | uses: actions/upload-artifact@v4.5.0
33 | with:
34 | name: InkCanvasForClass
35 | path: "Ink Canvas/bin/Any CPU/Release/net472/"
36 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | obj/
2 | bin/
3 | .vs
--------------------------------------------------------------------------------
/.idea/.idea.Ink Canvas/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Rider ignored files
5 | /projectSettingsUpdater.xml
6 | /modules.xml
7 | /contentModel.xml
8 | /.idea.Ink Canvas.iml
9 | # Editor-based HTTP Client requests
10 | /httpRequests/
11 | # Datasource local storage ignored files
12 | /dataSources/
13 | /dataSources.local.xml
14 |
--------------------------------------------------------------------------------
/.idea/.idea.Ink Canvas/.idea/.name:
--------------------------------------------------------------------------------
1 | Ink Canvas
--------------------------------------------------------------------------------
/.idea/.idea.Ink Canvas/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/.idea.Ink Canvas/.idea/indexLayout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ../../ICC CE main
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/.idea.Ink Canvas/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.vs/Ink Canvas/CopilotIndices/17.14.698.11175/CodeChunks.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/Ink Canvas/CopilotIndices/17.14.698.11175/CodeChunks.db
--------------------------------------------------------------------------------
/.vs/Ink Canvas/CopilotIndices/17.14.698.11175/SemanticSymbols.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/Ink Canvas/CopilotIndices/17.14.698.11175/SemanticSymbols.db
--------------------------------------------------------------------------------
/.vs/Ink Canvas/DesignTimeBuild/.dtbcache.v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/Ink Canvas/DesignTimeBuild/.dtbcache.v2
--------------------------------------------------------------------------------
/.vs/Ink Canvas/v17/.futdcache.v2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/Ink Canvas/v17/.futdcache.v2
--------------------------------------------------------------------------------
/.vs/Ink Canvas/v17/.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/Ink Canvas/v17/.suo
--------------------------------------------------------------------------------
/.vs/ProjectEvaluation/ink canvas.metadata.v9.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/ProjectEvaluation/ink canvas.metadata.v9.bin
--------------------------------------------------------------------------------
/.vs/ProjectEvaluation/ink canvas.projects.v9.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/ProjectEvaluation/ink canvas.projects.v9.bin
--------------------------------------------------------------------------------
/.vs/ProjectEvaluation/ink canvas.strings.v9.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/ProjectEvaluation/ink canvas.strings.v9.bin
--------------------------------------------------------------------------------
/.vs/VSWorkspaceState.json:
--------------------------------------------------------------------------------
1 | {
2 | "ExpandedNodes": [
3 | ""
4 | ],
5 | "SelectedNode": "\\Ink Canvas.sln",
6 | "PreviewInSolutionExplorer": false
7 | }
--------------------------------------------------------------------------------
/.vs/icc-0610.2.2/FileContentIndex/777fbe68-06ce-4859-8b8d-d763f120f2c0.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/icc-0610.2.2/FileContentIndex/777fbe68-06ce-4859-8b8d-d763f120f2c0.vsidx
--------------------------------------------------------------------------------
/.vs/icc-0610.2.2/FileContentIndex/95c8e0b1-8689-4e23-84a6-a09fc53d1455.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/icc-0610.2.2/FileContentIndex/95c8e0b1-8689-4e23-84a6-a09fc53d1455.vsidx
--------------------------------------------------------------------------------
/.vs/icc-0610.2.2/v17/.wsuo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/icc-0610.2.2/v17/.wsuo
--------------------------------------------------------------------------------
/.vs/icc-0610.2.2/v17/workspaceFileList.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/icc-0610.2.2/v17/workspaceFileList.bin
--------------------------------------------------------------------------------
/.vs/icc-0610.2.3/FileContentIndex/29319a2c-7faa-4ee5-8d24-17c238ca803e.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/icc-0610.2.3/FileContentIndex/29319a2c-7faa-4ee5-8d24-17c238ca803e.vsidx
--------------------------------------------------------------------------------
/.vs/icc-0610.2.3/FileContentIndex/34c6dd5d-6075-49b2-ab2c-4e8d079d036e.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/icc-0610.2.3/FileContentIndex/34c6dd5d-6075-49b2-ab2c-4e8d079d036e.vsidx
--------------------------------------------------------------------------------
/.vs/icc-0610.2.3/FileContentIndex/7a5efc25-7ca5-4a7f-a0e0-0e8bf3996d0a.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/icc-0610.2.3/FileContentIndex/7a5efc25-7ca5-4a7f-a0e0-0e8bf3996d0a.vsidx
--------------------------------------------------------------------------------
/.vs/icc-0610.2.3/FileContentIndex/9947b71c-9e8d-4a20-80aa-4e44b1609bf2.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/icc-0610.2.3/FileContentIndex/9947b71c-9e8d-4a20-80aa-4e44b1609bf2.vsidx
--------------------------------------------------------------------------------
/.vs/icc-0610.2.3/FileContentIndex/e1d7dcd2-b73f-4c9a-b51c-9ba3cb8d4cbb.vsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/icc-0610.2.3/FileContentIndex/e1d7dcd2-b73f-4c9a-b51c-9ba3cb8d4cbb.vsidx
--------------------------------------------------------------------------------
/.vs/icc-0610.2.3/v17/.wsuo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/icc-0610.2.3/v17/.wsuo
--------------------------------------------------------------------------------
/.vs/icc-0610.2.3/v17/DocumentLayout.backup.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version": 1,
3 | "WorkspaceRootPath": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\",
4 | "Documents": [
5 | {
6 | "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\icc.png||{177559E0-D141-11D0-92DF-00A0C9138C45}",
7 | "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:icc.png||{177559E0-D141-11D0-92DF-00A0C9138C45}"
8 | },
9 | {
10 | "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\AutomaticUpdateVersionControl.txt||{8B382828-6202-11D1-8870-0000F87579D2}",
11 | "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:AutomaticUpdateVersionControl.txt||{8B382828-6202-11D1-8870-0000F87579D2}"
12 | },
13 | {
14 | "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\.gitignore||{3B902123-F8A7-4915-9F01-361F908088D0}",
15 | "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:.gitignore||{3B902123-F8A7-4915-9F01-361F908088D0}"
16 | }
17 | ],
18 | "DocumentGroupContainers": [
19 | {
20 | "Orientation": 0,
21 | "VerticalTabListWidth": 256,
22 | "DocumentGroups": [
23 | {
24 | "DockedWidth": 200,
25 | "SelectedChildIndex": 0,
26 | "Children": [
27 | {
28 | "$type": "Document",
29 | "DocumentIndex": 0,
30 | "Title": "icc.png",
31 | "DocumentMoniker": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\icc.png",
32 | "RelativeDocumentMoniker": "icc.png",
33 | "ToolTip": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\icc.png",
34 | "RelativeToolTip": "icc.png",
35 | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001533|",
36 | "WhenOpened": "2025-05-24T13:12:49.619Z"
37 | },
38 | {
39 | "$type": "Document",
40 | "DocumentIndex": 1,
41 | "Title": "AutomaticUpdateVersionControl.txt",
42 | "DocumentMoniker": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\AutomaticUpdateVersionControl.txt",
43 | "RelativeDocumentMoniker": "AutomaticUpdateVersionControl.txt",
44 | "ToolTip": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\AutomaticUpdateVersionControl.txt",
45 | "RelativeToolTip": "AutomaticUpdateVersionControl.txt",
46 | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
47 | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003109|",
48 | "WhenOpened": "2025-05-24T13:12:49.575Z"
49 | },
50 | {
51 | "$type": "Document",
52 | "DocumentIndex": 2,
53 | "Title": ".gitignore",
54 | "DocumentMoniker": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\.gitignore",
55 | "RelativeDocumentMoniker": ".gitignore",
56 | "ToolTip": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\.gitignore",
57 | "RelativeToolTip": ".gitignore",
58 | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
59 | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
60 | "WhenOpened": "2025-05-24T13:12:49.025Z"
61 | }
62 | ]
63 | }
64 | ]
65 | }
66 | ]
67 | }
--------------------------------------------------------------------------------
/.vs/icc-0610.2.3/v17/DocumentLayout.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version": 1,
3 | "WorkspaceRootPath": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\",
4 | "Documents": [
5 | {
6 | "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\icc.png||{177559E0-D141-11D0-92DF-00A0C9138C45}",
7 | "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:icc.png||{177559E0-D141-11D0-92DF-00A0C9138C45}"
8 | },
9 | {
10 | "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\AutomaticUpdateVersionControl.txt||{8B382828-6202-11D1-8870-0000F87579D2}",
11 | "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:AutomaticUpdateVersionControl.txt||{8B382828-6202-11D1-8870-0000F87579D2}"
12 | },
13 | {
14 | "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\.gitignore||{3B902123-F8A7-4915-9F01-361F908088D0}",
15 | "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:.gitignore||{3B902123-F8A7-4915-9F01-361F908088D0}"
16 | }
17 | ],
18 | "DocumentGroupContainers": [
19 | {
20 | "Orientation": 0,
21 | "VerticalTabListWidth": 256,
22 | "DocumentGroups": [
23 | {
24 | "DockedWidth": 200,
25 | "SelectedChildIndex": 1,
26 | "Children": [
27 | {
28 | "$type": "Bookmark",
29 | "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
30 | },
31 | {
32 | "$type": "Document",
33 | "DocumentIndex": 0,
34 | "Title": "icc.png - PNG [1328x1328, 32 \u4F4D, PNG]",
35 | "DocumentMoniker": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\icc.png",
36 | "RelativeDocumentMoniker": "icc.png",
37 | "ToolTip": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\icc.png - PNG [1328x1328, 32 \u4F4D, PNG]",
38 | "RelativeToolTip": "icc.png - PNG [1328x1328, 32 \u4F4D, PNG]",
39 | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001533|",
40 | "WhenOpened": "2025-05-24T13:12:49.619Z",
41 | "EditorCaption": " - PNG [1328x1328, 32 \u4F4D, PNG]"
42 | },
43 | {
44 | "$type": "Document",
45 | "DocumentIndex": 1,
46 | "Title": "AutomaticUpdateVersionControl.txt",
47 | "DocumentMoniker": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\AutomaticUpdateVersionControl.txt",
48 | "RelativeDocumentMoniker": "AutomaticUpdateVersionControl.txt",
49 | "ToolTip": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\AutomaticUpdateVersionControl.txt",
50 | "RelativeToolTip": "AutomaticUpdateVersionControl.txt",
51 | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
52 | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003109|",
53 | "WhenOpened": "2025-05-24T13:12:49.575Z"
54 | },
55 | {
56 | "$type": "Document",
57 | "DocumentIndex": 2,
58 | "Title": ".gitignore",
59 | "DocumentMoniker": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\.gitignore",
60 | "RelativeDocumentMoniker": ".gitignore",
61 | "ToolTip": "C:\\Users\\Administrator\\Desktop\\ICC CE\\icc-0610.2.3\\.gitignore",
62 | "RelativeToolTip": ".gitignore",
63 | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
64 | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
65 | "WhenOpened": "2025-05-24T13:12:49.025Z"
66 | }
67 | ]
68 | }
69 | ]
70 | }
71 | ]
72 | }
--------------------------------------------------------------------------------
/.vs/icc-0610.2.3/v17/workspaceFileList.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/icc-0610.2.3/v17/workspaceFileList.bin
--------------------------------------------------------------------------------
/.vs/slnx.sqlite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/.vs/slnx.sqlite
--------------------------------------------------------------------------------
/AutomaticUpdateVersionControl.txt:
--------------------------------------------------------------------------------
1 | 1.7.0.0
2 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | We as members, contributors, and leaders pledge to make participation in our
6 | community a harassment-free experience for everyone, regardless of age, body
7 | size, visible or invisible disability, ethnicity, sex characteristics, gender
8 | identity and expression, level of experience, education, socio-economic status,
9 | nationality, personal appearance, race, religion, or sexual identity
10 | and orientation.
11 |
12 | We pledge to act and interact in ways that contribute to an open, welcoming,
13 | diverse, inclusive, and healthy community.
14 |
15 | ## Our Standards
16 |
17 | Examples of behavior that contributes to a positive environment for our
18 | community include:
19 |
20 | * Demonstrating empathy and kindness toward other people
21 | * Being respectful of differing opinions, viewpoints, and experiences
22 | * Giving and gracefully accepting constructive feedback
23 | * Accepting responsibility and apologizing to those affected by our mistakes,
24 | and learning from the experience
25 | * Focusing on what is best not just for us as individuals, but for the
26 | overall community
27 |
28 | Examples of unacceptable behavior include:
29 |
30 | * The use of sexualized language or imagery, and sexual attention or
31 | advances of any kind
32 | * Trolling, insulting or derogatory comments, and personal or political attacks
33 | * Public or private harassment
34 | * Publishing others' private information, such as a physical or email
35 | address, without their explicit permission
36 | * Other conduct which could reasonably be considered inappropriate in a
37 | professional setting
38 |
39 | ## Enforcement Responsibilities
40 |
41 | Community leaders are responsible for clarifying and enforcing our standards of
42 | acceptable behavior and will take appropriate and fair corrective action in
43 | response to any behavior that they deem inappropriate, threatening, offensive,
44 | or harmful.
45 |
46 | Community leaders have the right and responsibility to remove, edit, or reject
47 | comments, commits, code, wiki edits, issues, and other contributions that are
48 | not aligned to this Code of Conduct, and will communicate reasons for moderation
49 | decisions when appropriate.
50 |
51 | ## Scope
52 |
53 | This Code of Conduct applies within all community spaces, and also applies when
54 | an individual is officially representing the community in public spaces.
55 | Examples of representing our community include using an official e-mail address,
56 | posting via an official social media account, or acting as an appointed
57 | representative at an online or offline event.
58 |
59 | ## Enforcement
60 |
61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
62 | reported to the community leaders responsible for enforcement at
63 | QQ:2564608840.
64 | All complaints will be reviewed and investigated promptly and fairly.
65 |
66 | All community leaders are obligated to respect the privacy and security of the
67 | reporter of any incident.
68 |
69 | ## Enforcement Guidelines
70 |
71 | Community leaders will follow these Community Impact Guidelines in determining
72 | the consequences for any action they deem in violation of this Code of Conduct:
73 |
74 | ### 1. Correction
75 |
76 | **Community Impact**: Use of inappropriate language or other behavior deemed
77 | unprofessional or unwelcome in the community.
78 |
79 | **Consequence**: A private, written warning from community leaders, providing
80 | clarity around the nature of the violation and an explanation of why the
81 | behavior was inappropriate. A public apology may be requested.
82 |
83 | ### 2. Warning
84 |
85 | **Community Impact**: A violation through a single incident or series
86 | of actions.
87 |
88 | **Consequence**: A warning with consequences for continued behavior. No
89 | interaction with the people involved, including unsolicited interaction with
90 | those enforcing the Code of Conduct, for a specified period of time. This
91 | includes avoiding interactions in community spaces as well as external channels
92 | like social media. Violating these terms may lead to a temporary or
93 | permanent ban.
94 |
95 | ### 3. Temporary Ban
96 |
97 | **Community Impact**: A serious violation of community standards, including
98 | sustained inappropriate behavior.
99 |
100 | **Consequence**: A temporary ban from any sort of interaction or public
101 | communication with the community for a specified period of time. No public or
102 | private interaction with the people involved, including unsolicited interaction
103 | with those enforcing the Code of Conduct, is allowed during this period.
104 | Violating these terms may lead to a permanent ban.
105 |
106 | ### 4. Permanent Ban
107 |
108 | **Community Impact**: Demonstrating a pattern of violation of community
109 | standards, including sustained inappropriate behavior, harassment of an
110 | individual, or aggression toward or disparagement of classes of individuals.
111 |
112 | **Consequence**: A permanent ban from any sort of public interaction within
113 | the community.
114 |
115 | ## Attribution
116 |
117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118 | version 2.0, available at
119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
120 |
121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct
122 | enforcement ladder](https://github.com/mozilla/diversity).
123 |
124 | [homepage]: https://www.contributor-covenant.org
125 |
126 | For answers to common questions about this code of conduct, see the FAQ at
127 | https://www.contributor-covenant.org/faq. Translations are available at
128 | https://www.contributor-covenant.org/translations.
129 |
--------------------------------------------------------------------------------
/Images/icc ce.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Images/icc ce.png
--------------------------------------------------------------------------------
/Ink Canvas.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.5.33530.505
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InkCanvasForClass", "Ink Canvas\InkCanvasForClass.csproj", "{8D0EDFC7-F974-4571-BC49-6F3A6653FE81}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Debug|ARM = Debug|ARM
12 | Debug|ARM64 = Debug|ARM64
13 | Debug|x64 = Debug|x64
14 | Debug|x86 = Debug|x86
15 | Release|Any CPU = Release|Any CPU
16 | Release|ARM = Release|ARM
17 | Release|ARM64 = Release|ARM64
18 | Release|x64 = Release|x64
19 | Release|x86 = Release|x86
20 | EndGlobalSection
21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
22 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Debug|ARM.ActiveCfg = Debug|Any CPU
25 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Debug|ARM.Build.0 = Debug|Any CPU
26 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Debug|ARM64.ActiveCfg = Debug|ARM64
27 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Debug|ARM64.Build.0 = Debug|ARM64
28 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Debug|x64.ActiveCfg = Debug|x64
29 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Debug|x64.Build.0 = Debug|x64
30 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Debug|x86.ActiveCfg = Debug|Any CPU
31 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Debug|x86.Build.0 = Debug|Any CPU
32 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Release|Any CPU.ActiveCfg = Release|Any CPU
33 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Release|Any CPU.Build.0 = Release|Any CPU
34 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Release|ARM.ActiveCfg = Release|Any CPU
35 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Release|ARM.Build.0 = Release|Any CPU
36 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Release|ARM64.ActiveCfg = Release|ARM64
37 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Release|ARM64.Build.0 = Release|ARM64
38 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Release|x64.ActiveCfg = Release|x64
39 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Release|x64.Build.0 = Release|x64
40 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Release|x86.ActiveCfg = Release|x86
41 | {8D0EDFC7-F974-4571-BC49-6F3A6653FE81}.Release|x86.Build.0 = Release|x86
42 | EndGlobalSection
43 | GlobalSection(SolutionProperties) = preSolution
44 | HideSolutionNode = FALSE
45 | EndGlobalSection
46 | GlobalSection(ExtensibilityGlobals) = postSolution
47 | SolutionGuid = {89B9DD11-110D-428C-AB08-859B7F4B4E19}
48 | EndGlobalSection
49 | EndGlobal
50 |
--------------------------------------------------------------------------------
/Ink Canvas.sln.DotSettings.user:
--------------------------------------------------------------------------------
1 |
2 | WARNING
--------------------------------------------------------------------------------
/Ink Canvas/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Ink Canvas/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("InkCanvasForClass")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Dubi906w")]
12 | [assembly: AssemblyProduct("InkCanvasForClass")]
13 | [assembly: AssemblyCopyright("Copyright © HARKOTEK Studio 2024")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | //In order to begin building localizable applications, set
23 | //CultureYouAreCodingWith in your .csproj file
24 | //inside a . For example, if you are using US english
25 | //in your source files, set the to en-US. Then uncomment
26 | //the NeutralResourceLanguage attribute below. Update the "en-US" in
27 | //the line below to match the UICulture setting in the project file.
28 |
29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
30 |
31 |
32 | [assembly: ThemeInfo(
33 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
34 | //(used if a resource is not found in the page,
35 | // or application resource dictionaries)
36 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
37 | //(used if a resource is not found in the page,
38 | // app, or any theme specific resource dictionaries)
39 | )]
40 |
41 |
42 | // Version information for an assembly consists of the following four values:
43 | //
44 | // Major Version
45 | // Minor Version
46 | // Build Number
47 | // Revision
48 | //
49 | // You can specify all the values or you can default the Build and Revision Numbers
50 | // by using the '*' as shown below:
51 | // [assembly: AssemblyVersion("1.0.*")]
52 | [assembly: AssemblyVersion("1.7.0.3")]
53 | [assembly: AssemblyFileVersion("1.7.0.3")]
54 |
--------------------------------------------------------------------------------
/Ink Canvas/Helpers/Converters.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows;
4 | using System.Windows.Data;
5 |
6 | namespace Ink_Canvas.Converter
7 | {
8 | public class BooleanToVisibilityConverter : IValueConverter
9 | {
10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11 | {
12 | if ((bool)value == true)
13 | {
14 | return Visibility.Visible;
15 | }
16 | else
17 | {
18 | return Visibility.Collapsed;
19 | }
20 | }
21 |
22 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
23 | {
24 | if ((bool)value == true)
25 | {
26 | return Visibility.Visible;
27 | }
28 | else
29 | {
30 | return Visibility.Collapsed;
31 | }
32 | }
33 | }
34 | public class VisibilityConverter : IValueConverter
35 | {
36 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
37 | {
38 | Visibility visibility = (Visibility)value;
39 | if (visibility == Visibility.Visible)
40 | {
41 | return Visibility.Collapsed;
42 | }
43 | else
44 | {
45 | return Visibility.Visible;
46 | }
47 | }
48 |
49 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
50 | {
51 | Visibility visibility = (Visibility)value;
52 | if (visibility == Visibility.Visible)
53 | {
54 | return Visibility.Collapsed;
55 | }
56 | else
57 | {
58 | return Visibility.Visible;
59 | }
60 | }
61 | }
62 |
63 | public class IntNumberToString : IValueConverter
64 | {
65 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
66 | {
67 | if ((double)value == 0)
68 | {
69 | return "无限制";
70 | }
71 | else
72 | {
73 | return ((double)value).ToString() + "人";
74 | }
75 | }
76 |
77 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
78 | {
79 | if ((double)value == 0)
80 | {
81 | return "无限制";
82 | }
83 | else
84 | {
85 | return ((double)value).ToString() + "人";
86 | }
87 | }
88 | }
89 |
90 | public class IntNumberToString2 : IValueConverter
91 | {
92 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
93 | {
94 | if ((double)value == 0)
95 | {
96 | return "自动截图";
97 | }
98 | else
99 | {
100 | return ((double)value).ToString() + "条";
101 | }
102 | }
103 |
104 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
105 | {
106 | if ((double)value == 0)
107 | {
108 | return "自动截图";
109 | }
110 | else
111 | {
112 | return ((double)value).ToString() + "条";
113 | }
114 | }
115 | }
116 |
117 | public class IsEnabledToOpacityConverter : IValueConverter
118 | {
119 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
120 | {
121 | bool isChecked = (bool)value;
122 | if (isChecked == true)
123 | {
124 | return 1d;
125 | }
126 | else
127 | {
128 | return 0.35;
129 | }
130 | }
131 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); }
132 | }
133 | }
134 |
--------------------------------------------------------------------------------
/Ink Canvas/Helpers/DelAutoSavedFiles.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Windows;
4 |
5 | namespace Ink_Canvas.Helpers {
6 | internal class DelAutoSavedFiles {
7 | public static void DeleteFilesOlder(string directoryPath, int daysThreshold) {
8 | string[] extensionsToDel = { ".icstk", ".png" };
9 | if (Directory.Exists(directoryPath)) {
10 | // 获取目录中的所有子目录
11 | string[] subDirectories = Directory.GetDirectories(directoryPath, "*", SearchOption.AllDirectories);
12 | foreach (string subDirectory in subDirectories) {
13 | try {
14 | // 获取子目录下的所有文件
15 | string[] files = Directory.GetFiles(subDirectory);
16 | foreach (string filePath in files) {
17 | // 获取文件的创建日期
18 | DateTime creationDate = File.GetCreationTime(filePath);
19 | // 获取文件的扩展名
20 | string fileExtension = Path.GetExtension(filePath);
21 | // 如果文件的创建日期早于指定天数且是要删除的扩展名,则删除文件
22 | if (creationDate < DateTime.Now.AddDays(-daysThreshold)) {
23 | if (Array.Exists(extensionsToDel, ext => ext.Equals(fileExtension, StringComparison.OrdinalIgnoreCase))
24 | || Path.GetFileName(filePath).Equals("Position", StringComparison.OrdinalIgnoreCase)) {
25 | File.Delete(filePath);
26 | }
27 | }
28 | }
29 | } catch (Exception ex) {
30 | LogHelper.WriteLogToFile("DelAutoSavedFiles | 处理文件时出错: " + ex.ToString(), LogHelper.LogType.Error);
31 | }
32 | }
33 |
34 | try { // 递归删除空文件夹
35 | DeleteEmptyFolders(directoryPath);
36 | } catch (Exception ex) {
37 | LogHelper.WriteLogToFile("DelAutoSavedFiles | 处理文件时出错: " + ex.ToString(), LogHelper.LogType.Error);
38 | }
39 | }
40 | }
41 |
42 | private static void DeleteEmptyFolders(string directoryPath) {
43 | foreach (string dir in Directory.GetDirectories(directoryPath)) {
44 | DeleteEmptyFolders(dir);
45 | if (Directory.GetFiles(dir).Length == 0 && Directory.GetDirectories(dir).Length == 0) {
46 | Directory.Delete(dir, false);
47 | }
48 | }
49 | }
50 | }
51 | }
--------------------------------------------------------------------------------
/Ink Canvas/Helpers/DelayActionHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using System.Timers;
8 |
9 | namespace Ink_Canvas.Helpers
10 | {
11 | public class DelayAction
12 | {
13 | Timer _timerDebounce;
14 |
15 | ///
16 | /// 防抖函式
17 | ///
18 | /// 同步的對象,一般傳入控件,不需要可null
19 | public void DebounceAction(int timeMs, ISynchronizeInvoke inv, Action action)
20 | {
21 | lock (this) {
22 | if (_timerDebounce == null) {
23 | _timerDebounce = new Timer(timeMs) { AutoReset = false };
24 | _timerDebounce.Elapsed += (o, e) => {
25 | _timerDebounce.Stop(); _timerDebounce.Close(); _timerDebounce = null;
26 | InvokeAction(action, inv);
27 | };
28 | }
29 | _timerDebounce.Stop();
30 | _timerDebounce.Start();
31 | }
32 | }
33 |
34 | private static void InvokeAction(Action action, ISynchronizeInvoke inv)
35 | {
36 | if (inv == null)
37 | {
38 | action();
39 | }
40 | else
41 | {
42 | if (inv.InvokeRequired)
43 | {
44 | inv.Invoke(action, null);
45 | }
46 | else
47 | {
48 | action();
49 | }
50 | }
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Ink Canvas/Helpers/Hotkey.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Runtime.InteropServices;
4 | using System.Windows;
5 | using System.Windows.Input;
6 | using System.Windows.Interop;
7 |
8 | namespace Ink_Canvas
9 | {
10 | static class Hotkey
11 | {
12 | #region 系统api
13 | [DllImport("user32.dll")]
14 | [return: MarshalAs(UnmanagedType.Bool)]
15 | static extern bool RegisterHotKey(IntPtr hWnd, int id, HotkeyModifiers fsModifiers, uint vk);
16 |
17 | [DllImport("user32.dll")]
18 | static extern bool UnregisterHotKey(IntPtr hWnd, int id);
19 | #endregion
20 |
21 | ///
22 | /// 注册快捷键
23 | ///
24 | /// 持有快捷键窗口
25 | /// 组合键
26 | /// 快捷键
27 | /// 回调函数
28 | public static bool Regist(Window window, HotkeyModifiers fsModifiers, Key key, HotKeyCallBackHanlder callBack)
29 | {
30 | var hwnd = new WindowInteropHelper(window).Handle;
31 | var _hwndSource = HwndSource.FromHwnd(hwnd);
32 |
33 | if (keyid == 10)
34 | {
35 | _hwndSource.AddHook(WndProc);
36 | }
37 |
38 | int id = keyid++;
39 |
40 | var vk = KeyInterop.VirtualKeyFromKey(key);
41 | if (!RegisterHotKey(hwnd, id, fsModifiers, (uint)vk))
42 | {
43 | //throw new Exception("regist hotkey fail.");
44 | return false;
45 | }
46 | keymap[id] = callBack;
47 | return true;
48 | }
49 |
50 | ///
51 | /// 快捷键消息处理
52 | ///
53 | static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
54 | {
55 | if (msg == WM_HOTKEY)
56 | {
57 | int id = wParam.ToInt32();
58 | if (keymap.TryGetValue(id, out var callback))
59 | {
60 | callback();
61 | }
62 | }
63 | return IntPtr.Zero;
64 | }
65 |
66 | ///
67 | /// 注销快捷键
68 | ///
69 | /// 持有快捷键窗口的句柄
70 | /// 回调函数
71 | public static void UnRegist(IntPtr hWnd, HotKeyCallBackHanlder callBack)
72 | {
73 | foreach (KeyValuePair var in keymap)
74 | {
75 | if (var.Value == callBack)
76 | UnregisterHotKey(hWnd, var.Key);
77 | }
78 | }
79 |
80 |
81 | const int WM_HOTKEY = 0x312;
82 | static int keyid = 10;
83 | static Dictionary keymap = new Dictionary();
84 |
85 | public delegate void HotKeyCallBackHanlder();
86 | }
87 |
88 | enum HotkeyModifiers
89 | {
90 | MOD_ALT = 0x1,
91 | MOD_CONTROL = 0x2,
92 | MOD_SHIFT = 0x4,
93 | MOD_WIN = 0x8
94 | }
95 |
96 | }
97 |
--------------------------------------------------------------------------------
/Ink Canvas/Helpers/IsOutsideOfScreenHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows.Interop;
7 | using System.Windows;
8 |
9 | namespace Ink_Canvas.Helpers {
10 | internal class IsOutsideOfScreenHelper {
11 | public static bool IsOutsideOfScreen(FrameworkElement target) {
12 | var hwndSource = (HwndSource)PresentationSource.FromVisual(target);
13 | if (hwndSource is null) {
14 | return true;
15 | }
16 |
17 | var hWnd = hwndSource.Handle;
18 | var targetBounds = GetPixelBoundsToScreen(target);
19 |
20 | var screens = System.Windows.Forms.Screen.AllScreens;
21 | return !screens.Any(x => x.Bounds.IntersectsWith(targetBounds));
22 |
23 | System.Drawing.Rectangle GetPixelBoundsToScreen(FrameworkElement visual) {
24 | var pixelBoundsToScreen = Rect.Empty;
25 | pixelBoundsToScreen.Union(visual.PointToScreen(new Point(0, 0)));
26 | pixelBoundsToScreen.Union(visual.PointToScreen(new Point(visual.ActualWidth, 0)));
27 | pixelBoundsToScreen.Union(visual.PointToScreen(new Point(0, visual.ActualHeight)));
28 | pixelBoundsToScreen.Union(visual.PointToScreen(new Point(visual.ActualWidth, visual.ActualHeight)));
29 | return new System.Drawing.Rectangle(
30 | (int)pixelBoundsToScreen.X, (int)pixelBoundsToScreen.Y,
31 | (int)pixelBoundsToScreen.Width, (int)pixelBoundsToScreen.Height);
32 | }
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/Ink Canvas/Helpers/LogHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.IO;
4 | using System.Threading;
5 |
6 | namespace Ink_Canvas.Helpers
7 | {
8 | class LogHelper
9 | {
10 | public static string LogFile = "Log.txt";
11 | private static string LogsFolder = "Logs";
12 | private static string AppStartTime = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss");
13 | private static readonly long MaxLogsFolderSizeBytes = 5 * 1024 * 1024; // 5MB
14 |
15 | public static void NewLog(string str)
16 | {
17 | WriteLogToFile(str, LogType.Info);
18 | }
19 |
20 | public static void NewLog(Exception ex)
21 | {
22 | if (ex == null) return;
23 | var stackTrace = ex.StackTrace ?? "";
24 | var msg = $"[Exception] Type: {ex.GetType().FullName}\nMessage: {ex.Message}\nStackTrace: {stackTrace}";
25 | if (ex.InnerException != null)
26 | {
27 | msg += $"\nInnerException: {ex.InnerException.GetType().FullName} - {ex.InnerException.Message}\n{ex.InnerException.StackTrace}";
28 | }
29 | WriteLogToFile(msg, LogType.Error);
30 | }
31 |
32 | public static void WriteLogToFile(string str, LogType logType = LogType.Info)
33 | {
34 | // 检查日志是否启用
35 | if (MainWindow.Settings != null && MainWindow.Settings.Advanced != null && !MainWindow.Settings.Advanced.IsLogEnabled) return;
36 |
37 | string strLogType = logType.ToString();
38 | try
39 | {
40 | string file;
41 |
42 | // 检查是否启用了日期保存功能
43 | if (MainWindow.Settings != null && MainWindow.Settings.Advanced != null && MainWindow.Settings.Advanced.IsSaveLogByDate)
44 | {
45 | // 确保Logs文件夹存在
46 | string logsPath = Path.Combine(App.RootPath, LogsFolder);
47 | if (!Directory.Exists(logsPath))
48 | {
49 | Directory.CreateDirectory(logsPath);
50 | }
51 |
52 | // 检查Logs文件夹大小,如果超过5MB则清空
53 | CheckAndCleanLogsFolder(logsPath);
54 |
55 | // 使用软件启动时间作为日志文件名
56 | file = Path.Combine(logsPath, $"Log_{AppStartTime}.txt");
57 | }
58 | else
59 | {
60 | file = App.RootPath + LogFile;
61 | }
62 |
63 | if (!Directory.Exists(App.RootPath))
64 | {
65 | Directory.CreateDirectory(App.RootPath);
66 | }
67 |
68 | var threadId = Thread.CurrentThread.ManagedThreadId;
69 | var callingMethod = new StackTrace(2, true).GetFrame(0);
70 | string callerInfo = "";
71 | if (callingMethod != null)
72 | {
73 | var method = callingMethod.GetMethod();
74 | if (method != null)
75 | {
76 | var className = method.DeclaringType != null ? method.DeclaringType.FullName : "";
77 | callerInfo = $"{className}.{method.Name}";
78 | }
79 | }
80 | string logLine = string.Format("{0} [T{1}] [{2}] [{3}] {4}", DateTime.Now.ToString("O"), threadId, strLogType, callerInfo, str);
81 | using (StreamWriter sw = new StreamWriter(file, true))
82 | {
83 | sw.WriteLine(logLine);
84 | }
85 | }
86 | catch { }
87 | }
88 |
89 | private static void CheckAndCleanLogsFolder(string logsPath)
90 | {
91 | try
92 | {
93 | long totalSize = 0;
94 | DirectoryInfo dirInfo = new DirectoryInfo(logsPath);
95 |
96 | // 如果目录不存在,直接返回
97 | if (!dirInfo.Exists) return;
98 |
99 | // 计算文件夹大小
100 | foreach (FileInfo file in dirInfo.GetFiles())
101 | {
102 | totalSize += file.Length;
103 | }
104 |
105 | // 如果超过5MB,清空文件夹
106 | if (totalSize > MaxLogsFolderSizeBytes)
107 | {
108 | foreach (FileInfo file in dirInfo.GetFiles())
109 | {
110 | try
111 | {
112 | file.Delete();
113 | }
114 | catch { }
115 | }
116 |
117 | // 记录清理操作
118 | string cleanupMessage = $"Logs folder exceeded size limit ({totalSize / 1024.0 / 1024.0:F2} MB > {MaxLogsFolderSizeBytes / 1024.0 / 1024.0:F2} MB). Folder cleaned.";
119 | using (StreamWriter sw = new StreamWriter(Path.Combine(logsPath, $"Log_{AppStartTime}.txt"), true))
120 | {
121 | sw.WriteLine($"{DateTime.Now:O} [Cleanup] {cleanupMessage}");
122 | }
123 | }
124 | }
125 | catch { }
126 | }
127 |
128 | internal static void WriteLogToFile(string v, object warning)
129 | {
130 | WriteLogToFile($"[Warning] {v}", LogType.Warning);
131 | }
132 |
133 | public enum LogType
134 | {
135 | Info,
136 | Trace,
137 | Error,
138 | Event,
139 | Warning
140 | }
141 | }
142 | }
143 |
--------------------------------------------------------------------------------
/Ink Canvas/Helpers/MultiTouchInput.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows;
3 | using System.Windows.Ink;
4 | using System.Windows.Input;
5 | using System.Windows.Media;
6 |
7 | namespace Ink_Canvas.Helpers
8 | {
9 | public class VisualCanvas : FrameworkElement
10 | {
11 | protected override Visual GetVisualChild(int index)
12 | {
13 | return Visual;
14 | }
15 |
16 | protected override int VisualChildrenCount => 1;
17 |
18 | public VisualCanvas(DrawingVisual visual)
19 | {
20 | Visual = visual;
21 | AddVisualChild(visual);
22 | }
23 |
24 | public DrawingVisual Visual { get; }
25 | }
26 |
27 | ///
28 | /// 用于显示笔迹的类
29 | ///
30 | public class StrokeVisual : DrawingVisual
31 | {
32 | ///
33 | /// 创建显示笔迹的类
34 | ///
35 | public StrokeVisual() : this(new DrawingAttributes()
36 | {
37 | Color = Colors.Red,
38 | //FitToCurve = true,
39 | Width = 3,
40 | Height = 3
41 | })
42 | {
43 | }
44 |
45 | ///
46 | /// 创建显示笔迹的类
47 | ///
48 | ///
49 | public StrokeVisual(DrawingAttributes drawingAttributes)
50 | {
51 | _drawingAttributes = drawingAttributes;
52 | }
53 |
54 | ///
55 | /// 设置或获取显示的笔迹
56 | ///
57 | public Stroke Stroke { set; get; }
58 |
59 | ///
60 | /// 在笔迹中添加点
61 | ///
62 | ///
63 | public void Add(StylusPoint point)
64 | {
65 | if (Stroke == null)
66 | {
67 | var collection = new StylusPointCollection { point };
68 | Stroke = new Stroke(collection) { DrawingAttributes = _drawingAttributes };
69 | }
70 | else
71 | {
72 | Stroke.StylusPoints.Add(point);
73 | }
74 | }
75 |
76 | ///
77 | /// 重新画出笔迹
78 | ///
79 | public void Redraw()
80 | {
81 | try
82 | {
83 | using (var dc = RenderOpen())
84 | {
85 | Stroke.Draw(dc);
86 | }
87 | }
88 | catch { }
89 | }
90 |
91 | private readonly DrawingAttributes _drawingAttributes;
92 |
93 | public static implicit operator Stroke(StrokeVisual v)
94 | {
95 | throw new NotImplementedException();
96 | }
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/Ink Canvas/Helpers/SoftwareLauncher.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Win32;
2 | using System;
3 | using System.Diagnostics;
4 | using System.Runtime.InteropServices;
5 |
6 | namespace Ink_Canvas.Helpers
7 | {
8 | internal class SoftwareLauncher
9 | {
10 | [DllImport("user32.dll")]
11 | private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
12 |
13 | public static void LaunchEasiCamera(string softwareName)
14 | {
15 | string executablePath = FindEasiCameraExecutablePath(softwareName);
16 |
17 | if (!string.IsNullOrEmpty(executablePath))
18 | {
19 | try
20 | {
21 | Process.Start(executablePath);
22 | //Console.WriteLine(softwareName + " 启动成功!");
23 | }
24 | catch (Exception ex)
25 | {
26 | Console.WriteLine("启动失败: " + ex.Message);
27 | //MessageBox.Show("启动失败: " + ex.Message);
28 | }
29 | }
30 | else
31 | {
32 | //Console.WriteLine(softwareName + " 未找到可执行文件路径。");
33 | }
34 | }
35 |
36 | private static string FindEasiCameraExecutablePath(string softwareName)
37 | {
38 | string executablePath = null;
39 |
40 | using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall"))
41 | {
42 | foreach (string subkeyName in key.GetSubKeyNames())
43 | {
44 | using (RegistryKey subkey = key.OpenSubKey(subkeyName))
45 | {
46 | string displayName = subkey.GetValue("DisplayName") as string;
47 | string installLocation = subkey.GetValue("InstallLocation") as string;
48 | string uninstallString = subkey.GetValue("UninstallString") as string;
49 |
50 | if (!string.IsNullOrEmpty(displayName) && displayName.Contains(softwareName))
51 | {
52 | if (!string.IsNullOrEmpty(installLocation))
53 | {
54 | executablePath = System.IO.Path.Combine(installLocation, "sweclauncher.exe");
55 | }
56 | else if (!string.IsNullOrEmpty(uninstallString))
57 | {
58 | int lastSlashIndex = uninstallString.LastIndexOf("\\");
59 | if (lastSlashIndex >= 0)
60 | {
61 | string folderPath = uninstallString.Substring(0, lastSlashIndex);
62 | executablePath = System.IO.Path.Combine(folderPath, "sweclauncher", "sweclauncher.exe");
63 | }
64 | }
65 | break;
66 | }
67 | }
68 | }
69 | }
70 |
71 | return executablePath;
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/Ink Canvas/Helpers/StartupCount.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 |
4 | namespace Ink_Canvas.Helpers
5 | {
6 | public static class StartupCount
7 | {
8 | private static readonly string CountFilePath = Path.Combine(App.RootPath, "startup-count");
9 | private static readonly object fileLock = new object();
10 |
11 | public static int GetCount()
12 | {
13 | try
14 | {
15 | if (File.Exists(CountFilePath))
16 | {
17 | var text = File.ReadAllText(CountFilePath).Trim();
18 | if (int.TryParse(text, out int count))
19 | return count;
20 | }
21 | }
22 | catch { }
23 | return 0;
24 | }
25 |
26 | public static void Increment()
27 | {
28 | lock (fileLock)
29 | {
30 | int count = GetCount() + 1;
31 | try
32 | {
33 | File.WriteAllText(CountFilePath, count.ToString());
34 | }
35 | catch { }
36 | }
37 | }
38 |
39 | public static void Reset()
40 | {
41 | lock (fileLock)
42 | {
43 | try
44 | {
45 | if (File.Exists(CountFilePath))
46 | File.Delete(CountFilePath);
47 | }
48 | catch { }
49 | }
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/Ink Canvas/Helpers/WinTabWindowsChecker.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Automation;
2 |
3 | namespace Ink_Canvas.Helpers {
4 | internal class WinTabWindowsChecker {
5 | /*
6 | public static bool IsWindowMinimized(string windowName, bool matchFullName = true) {
7 | // 获取Win+Tab预览中的窗口
8 | AutomationElementCollection windows = AutomationElement.RootElement.FindAll(
9 | TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window));
10 |
11 | foreach (AutomationElement window in windows) {
12 | //LogHelper.WriteLogToFile("" + window.Current.Name);
13 |
14 | string windowTitle = window.Current.Name;
15 |
16 | // 如果窗口标题包含 windowName,则进行检查
17 | if (!string.IsNullOrEmpty(windowTitle) && windowTitle.Contains(windowName)) {
18 | if (matchFullName) {
19 | if (windowTitle.Length == windowName.Length) {
20 | // 检查窗口是否最小化
21 | WindowPattern windowPattern = window.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern;
22 | if (windowPattern != null) {
23 | bool isMinimized = windowPattern.Current.WindowVisualState == WindowVisualState.Minimized;
24 | //LogHelper.WriteLogToFile("" + windowTitle + isMinimized);
25 | return isMinimized;
26 | }
27 | }
28 | } else {
29 | // 检查窗口是否最小化
30 | WindowPattern windowPattern = window.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern;
31 | if (windowPattern != null) {
32 | bool isMinimized = windowPattern.Current.WindowVisualState == WindowVisualState.Minimized;
33 | return isMinimized;
34 | }
35 | }
36 | }
37 | }
38 | // 未找到软件白板窗口
39 | return true;
40 | }
41 | */
42 |
43 | public static bool IsWindowExisted(string windowName, bool matchFullName = true) {
44 | // 获取Win+Tab预览中的窗口
45 | AutomationElementCollection windows = AutomationElement.RootElement.FindAll(
46 | TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window));
47 |
48 | foreach (AutomationElement window in windows) {
49 | //LogHelper.WriteLogToFile("" + window.Current.Name);
50 |
51 | string windowTitle = window.Current.Name;
52 |
53 | // 如果窗口标题包含 windowName,则进行检查
54 | if (!string.IsNullOrEmpty(windowTitle) && windowTitle.Contains(windowName)) {
55 | if (matchFullName) {
56 | if (windowTitle.Length == windowName.Length) {
57 | WindowPattern windowPattern = window.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern;
58 | if (windowPattern != null) {
59 | return true;
60 | }
61 | }
62 | } else {
63 | WindowPattern windowPattern = window.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern;
64 | if (windowPattern != null) {
65 | return true;
66 | }
67 | }
68 | }
69 | }
70 | return false;
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/Ink Canvas/IACore.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/IACore.dll
--------------------------------------------------------------------------------
/Ink Canvas/IALoader.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/IALoader.dll
--------------------------------------------------------------------------------
/Ink Canvas/IAWinFX.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/IAWinFX.dll
--------------------------------------------------------------------------------
/Ink Canvas/InkCanvasForClass.csproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <_LastSelectedProfileId>D:\vs\ica\Ink Canvas\Properties\PublishProfiles\FolderProfile.pubxml
5 |
6 |
--------------------------------------------------------------------------------
/Ink Canvas/MainWindow_cs/ConfigHelper.cs:
--------------------------------------------------------------------------------
1 | namespace Ink_Canvas
2 | {
3 | internal class ConfigHelper
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/Ink Canvas/MainWindow_cs/MW_AutoStart.cs:
--------------------------------------------------------------------------------
1 | using IWshRuntimeLibrary;
2 | using System;
3 | using System.Windows;
4 |
5 | namespace Ink_Canvas {
6 | public partial class MainWindow : Window {
7 | public static bool StartAutomaticallyCreate(string exeName) {
8 | try {
9 | var shell = new WshShell();
10 | var shortcut = (IWshShortcut)shell.CreateShortcut(
11 | Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "\\" + exeName + ".lnk");
12 | //设置快捷方式的目标所在的位置(源程序完整路径)
13 | shortcut.TargetPath = System.Windows.Forms.Application.ExecutablePath;
14 | //应用程序的工作目录
15 | //当用户没有指定一个具体的目录时,快捷方式的目标应用程序将使用该属性所指定的目录来装载或保存文件。
16 | shortcut.WorkingDirectory = Environment.CurrentDirectory;
17 | //目标应用程序窗口类型(1.Normal window普通窗口,3.Maximized最大化窗口,7.Minimized最小化)
18 | shortcut.WindowStyle = 1;
19 | //快捷方式的描述
20 | shortcut.Description = exeName + "_Ink";
21 | //设置快捷键(如果有必要的话.)
22 | //shortcut.Hotkey = "CTRL+ALT+D";
23 | shortcut.Save();
24 | return true;
25 | }
26 | catch (Exception) { }
27 |
28 | return false;
29 | }
30 |
31 | public static bool StartAutomaticallyDel(string exeName) {
32 | try {
33 | System.IO.File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "\\" + exeName +
34 | ".lnk");
35 | return true;
36 | }
37 | catch (Exception) { }
38 |
39 | return false;
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/Ink Canvas/MainWindow_cs/MW_AutoTheme.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Win32;
2 | using iNKORE.UI.WPF.Modern;
3 | using System;
4 | using System.Windows;
5 | using System.Windows.Media;
6 | using Application = System.Windows.Application;
7 |
8 | namespace Ink_Canvas {
9 | public partial class MainWindow : Window {
10 | private Color FloatBarForegroundColor = Color.FromRgb(102, 102, 102);
11 |
12 | private void SetTheme(string theme) {
13 | if (theme == "Light") {
14 | var rd1 = new ResourceDictionary()
15 | { Source = new Uri("Resources/Styles/Light.xaml", UriKind.Relative) };
16 | Application.Current.Resources.MergedDictionaries.Add(rd1);
17 |
18 | var rd2 = new ResourceDictionary()
19 | { Source = new Uri("Resources/DrawShapeImageDictionary.xaml", UriKind.Relative) };
20 | Application.Current.Resources.MergedDictionaries.Add(rd2);
21 |
22 | var rd3 = new ResourceDictionary()
23 | { Source = new Uri("Resources/SeewoImageDictionary.xaml", UriKind.Relative) };
24 | Application.Current.Resources.MergedDictionaries.Add(rd3);
25 |
26 | var rd4 = new ResourceDictionary()
27 | { Source = new Uri("Resources/IconImageDictionary.xaml", UriKind.Relative) };
28 | Application.Current.Resources.MergedDictionaries.Add(rd4);
29 |
30 | ThemeManager.SetRequestedTheme(window, ElementTheme.Light);
31 |
32 | FloatBarForegroundColor = (Color)Application.Current.FindResource("FloatBarForegroundColor");
33 | }
34 | else if (theme == "Dark") {
35 | var rd1 = new ResourceDictionary() { Source = new Uri("Resources/Styles/Dark.xaml", UriKind.Relative) };
36 | Application.Current.Resources.MergedDictionaries.Add(rd1);
37 |
38 | var rd2 = new ResourceDictionary()
39 | { Source = new Uri("Resources/DrawShapeImageDictionary.xaml", UriKind.Relative) };
40 | Application.Current.Resources.MergedDictionaries.Add(rd2);
41 |
42 | var rd3 = new ResourceDictionary()
43 | { Source = new Uri("Resources/SeewoImageDictionary.xaml", UriKind.Relative) };
44 | Application.Current.Resources.MergedDictionaries.Add(rd3);
45 |
46 | var rd4 = new ResourceDictionary()
47 | { Source = new Uri("Resources/IconImageDictionary.xaml", UriKind.Relative) };
48 | Application.Current.Resources.MergedDictionaries.Add(rd4);
49 |
50 | ThemeManager.SetRequestedTheme(window, ElementTheme.Dark);
51 |
52 | FloatBarForegroundColor = (Color)Application.Current.FindResource("FloatBarForegroundColor");
53 | }
54 | }
55 |
56 | private void SystemEvents_UserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e) {
57 | switch (Settings.Appearance.Theme) {
58 | case 0:
59 | SetTheme("Light");
60 | break;
61 | case 1:
62 | SetTheme("Dark");
63 | break;
64 | case 2:
65 | if (IsSystemThemeLight()) SetTheme("Light");
66 | else SetTheme("Dark");
67 | break;
68 | }
69 | }
70 |
71 | private bool IsSystemThemeLight() {
72 | var light = false;
73 | try {
74 | var registryKey = Registry.CurrentUser;
75 | var themeKey =
76 | registryKey.OpenSubKey("software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize");
77 | var keyValue = 0;
78 | if (themeKey != null) keyValue = (int)themeKey.GetValue("SystemUsesLightTheme");
79 | if (keyValue == 1) light = true;
80 | }
81 | catch { }
82 |
83 | return light;
84 | }
85 | }
86 | }
--------------------------------------------------------------------------------
/Ink Canvas/MainWindow_cs/MW_BoardIcons.cs:
--------------------------------------------------------------------------------
1 | using Ink_Canvas.Helpers;
2 | using System.Diagnostics;
3 | using System.Windows;
4 | using System.Windows.Controls;
5 | using System.Windows.Ink;
6 | using System.Windows.Input;
7 |
8 | namespace Ink_Canvas {
9 | public partial class MainWindow : Window {
10 | private void BoardChangeBackgroundColorBtn_MouseUp(object sender, RoutedEventArgs e) {
11 | if (!isLoaded) return;
12 | Settings.Canvas.UsingWhiteboard = !Settings.Canvas.UsingWhiteboard;
13 | SaveSettingsToFile();
14 | if (Settings.Canvas.UsingWhiteboard) {
15 | if (inkColor == 5) lastBoardInkColor = 0;
16 | ICCWaterMarkDark.Visibility = Visibility.Visible;
17 | ICCWaterMarkWhite.Visibility = Visibility.Collapsed;
18 | }
19 | else {
20 | if (inkColor == 0) lastBoardInkColor = 5;
21 | ICCWaterMarkWhite.Visibility = Visibility.Visible;
22 | ICCWaterMarkDark.Visibility = Visibility.Collapsed;
23 | }
24 |
25 | CheckColorTheme(true);
26 | }
27 |
28 | private void BoardEraserIcon_Click(object sender, RoutedEventArgs e) {
29 | if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint ||
30 | inkCanvas.EditingMode == InkCanvasEditingMode.EraseByStroke) {
31 | if (BoardEraserSizePanel.Visibility == Visibility.Collapsed) {
32 | AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardEraserSizePanel);
33 | } else {
34 | AnimationsHelper.HideWithSlideAndFade(BoardEraserSizePanel);
35 | }
36 | } else {
37 | forceEraser = true;
38 | forcePointEraser = true;
39 |
40 | // 使用统一的方法应用橡皮擦形状,确保一致性
41 | ApplyCurrentEraserShape();
42 |
43 | inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint;
44 | drawingShapeMode = 0;
45 |
46 | inkCanvas_EditingModeChanged(inkCanvas, null);
47 | CancelSingleFingerDragMode();
48 |
49 | HideSubPanels("eraser");
50 | }
51 | }
52 |
53 | private void BoardEraserIconByStrokes_Click(object sender, RoutedEventArgs e) {
54 | //if (BoardEraserByStrokes.Background.ToString() == "#FF679CF4") {
55 | // AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardDeleteIcon);
56 | //}
57 | //else {
58 | forceEraser = true;
59 | forcePointEraser = false;
60 |
61 | inkCanvas.EraserShape = new EllipseStylusShape(5, 5);
62 | inkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke;
63 | drawingShapeMode = 0;
64 |
65 | inkCanvas_EditingModeChanged(inkCanvas, null);
66 | CancelSingleFingerDragMode();
67 |
68 | HideSubPanels("eraserByStrokes");
69 | //}
70 | }
71 |
72 | private void BoardSymbolIconDelete_MouseUp(object sender, RoutedEventArgs e) {
73 | PenIcon_Click(null, null);
74 | SymbolIconDelete_MouseUp(null, null);
75 | }
76 | private void BoardSymbolIconDeleteInkAndHistories_MouseUp(object sender, RoutedEventArgs e)
77 | {
78 | PenIcon_Click(null, null);
79 | SymbolIconDelete_MouseUp(null, null);
80 | if (Settings.Canvas.ClearCanvasAndClearTimeMachine == false) timeMachine.ClearStrokeHistory();
81 | }
82 |
83 | private void BoardLaunchEasiCamera_MouseUp(object sender, MouseButtonEventArgs e) {
84 | ImageBlackboard_MouseUp(null, null);
85 | SoftwareLauncher.LaunchEasiCamera("希沃视频展台");
86 | }
87 |
88 | private void BoardLaunchDesmos_MouseUp(object sender, MouseButtonEventArgs e) {
89 | HideSubPanelsImmediately();
90 | ImageBlackboard_MouseUp(null, null);
91 | Process.Start("https://www.desmos.com/calculator?lang=zh-CN");
92 | }
93 | }
94 | }
--------------------------------------------------------------------------------
/Ink Canvas/MainWindow_cs/MW_Hotkeys.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Input;
3 |
4 | namespace Ink_Canvas {
5 | public partial class MainWindow : Window {
6 | private void Window_MouseWheel(object sender, MouseWheelEventArgs e) {
7 | if (StackPanelPPTControls.Visibility != Visibility.Visible || currentMode != 0) return;
8 | if (e.Delta >= 120)
9 | BtnPPTSlidesUp_Click(BtnPPTSlidesUp, null);
10 | else if (e.Delta <= -120) BtnPPTSlidesDown_Click(BtnPPTSlidesDown, null);
11 | }
12 |
13 | private void Main_Grid_PreviewKeyDown(object sender, KeyEventArgs e) {
14 | if (StackPanelPPTControls.Visibility != Visibility.Visible || currentMode != 0) return;
15 |
16 | if (e.Key == Key.Down || e.Key == Key.PageDown || e.Key == Key.Right || e.Key == Key.N ||
17 | e.Key == Key.Space) BtnPPTSlidesDown_Click(BtnPPTSlidesDown, null);
18 | if (e.Key == Key.Up || e.Key == Key.PageUp || e.Key == Key.Left || e.Key == Key.P)
19 | BtnPPTSlidesUp_Click(BtnPPTSlidesUp, null);
20 | }
21 |
22 | private void Window_KeyDown(object sender, KeyEventArgs e) {
23 | if (e.Key == Key.Escape) KeyExit(null, null);
24 | }
25 |
26 | private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e) {
27 | e.CanExecute = true;
28 | }
29 |
30 | private void HotKey_Undo(object sender, ExecutedRoutedEventArgs e) {
31 | try {
32 | SymbolIconUndo_MouseUp(lastBorderMouseDownObject, null);
33 | }
34 | catch { }
35 | }
36 |
37 | private void HotKey_Redo(object sender, ExecutedRoutedEventArgs e) {
38 | try {
39 | SymbolIconRedo_MouseUp(lastBorderMouseDownObject, null);
40 | }
41 | catch { }
42 | }
43 |
44 | private void HotKey_Clear(object sender, ExecutedRoutedEventArgs e) {
45 | SymbolIconDelete_MouseUp(lastBorderMouseDownObject, null);
46 | }
47 |
48 |
49 | private void KeyExit(object sender, ExecutedRoutedEventArgs e) {
50 | if (BtnPPTSlideShowEnd.Visibility == Visibility.Visible) BtnPPTSlideShowEnd_Click(BtnPPTSlideShowEnd, null);
51 | }
52 |
53 | private void KeyChangeToDrawTool(object sender, ExecutedRoutedEventArgs e) {
54 | PenIcon_Click(lastBorderMouseDownObject, null);
55 | }
56 |
57 | private void KeyChangeToQuitDrawTool(object sender, ExecutedRoutedEventArgs e) {
58 | if (currentMode != 0) ImageBlackboard_MouseUp(lastBorderMouseDownObject, null);
59 | CursorIcon_Click(lastBorderMouseDownObject, null);
60 | }
61 |
62 | private void KeyChangeToSelect(object sender, ExecutedRoutedEventArgs e) {
63 | if (StackPanelCanvasControls.Visibility == Visibility.Visible)
64 | SymbolIconSelect_MouseUp(lastBorderMouseDownObject, null);
65 | }
66 |
67 | private void KeyChangeToEraser(object sender, ExecutedRoutedEventArgs e) {
68 | if (StackPanelCanvasControls.Visibility == Visibility.Visible) {
69 | if (Eraser_Icon.Background != null)
70 | EraserIconByStrokes_Click(lastBorderMouseDownObject, null);
71 | else
72 | EraserIcon_Click(lastBorderMouseDownObject, null);
73 | }
74 | }
75 |
76 | private void KeyChangeToBoard(object sender, ExecutedRoutedEventArgs e) {
77 | ImageBlackboard_MouseUp(lastBorderMouseDownObject, null);
78 | }
79 |
80 | private void KeyCapture(object sender, ExecutedRoutedEventArgs e) {
81 | SaveScreenShotToDesktop();
82 | }
83 |
84 | private void KeyDrawLine(object sender, ExecutedRoutedEventArgs e) {
85 | if (StackPanelCanvasControls.Visibility == Visibility.Visible) BtnDrawLine_Click(lastMouseDownSender, null);
86 | }
87 |
88 | private void KeyHide(object sender, ExecutedRoutedEventArgs e) {
89 | SymbolIconEmoji_MouseUp(null, null);
90 | }
91 | }
92 | }
--------------------------------------------------------------------------------
/Ink Canvas/MainWindow_cs/MW_Notification.cs:
--------------------------------------------------------------------------------
1 | using Ink_Canvas.Helpers;
2 | using System;
3 | using System.Linq;
4 | using System.Threading;
5 | using System.Windows;
6 |
7 | namespace Ink_Canvas {
8 | public partial class MainWindow : Window {
9 | private int lastNotificationShowTime = 0;
10 | private int notificationShowTime = 2500;
11 |
12 | public static void ShowNewMessage(string notice, bool isShowImmediately = true) {
13 | (Application.Current?.Windows.Cast().FirstOrDefault(window => window is MainWindow) as MainWindow)
14 | ?.ShowNotification(notice, isShowImmediately);
15 | }
16 |
17 | public void ShowNotification(string notice, bool isShowImmediately = true) {
18 | try {
19 | lastNotificationShowTime = Environment.TickCount;
20 |
21 | TextBlockNotice.Text = notice;
22 | AnimationsHelper.ShowWithSlideFromBottomAndFade(GridNotifications);
23 |
24 | new Thread(new ThreadStart(() => {
25 | Thread.Sleep(notificationShowTime + 300);
26 | if (Environment.TickCount - lastNotificationShowTime >= notificationShowTime)
27 | Application.Current.Dispatcher.Invoke(() => {
28 | AnimationsHelper.HideWithSlideAndFade(GridNotifications);
29 | });
30 | })).Start();
31 | }
32 | catch { }
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/Ink Canvas/MainWindow_cs/MW_PageListView.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Collections.ObjectModel;
4 | using System.Diagnostics;
5 | using System.Linq;
6 | using System.Reflection;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows;
10 | using System.Windows.Controls;
11 | using System.Windows.Forms;
12 | using System.Windows.Ink;
13 | using System.Windows.Input;
14 | using System.Windows.Media;
15 | using Ink_Canvas.Helpers;
16 |
17 | namespace Ink_Canvas
18 | {
19 | public partial class MainWindow : Window
20 | {
21 | private class PageListViewItem
22 | {
23 | public int Index { get; set; }
24 | public StrokeCollection Strokes { get; set; }
25 | }
26 |
27 | ObservableCollection blackBoardSidePageListViewObservableCollection = new ObservableCollection();
28 |
29 | ///
30 | /// 刷新白板的缩略图页面列表。
31 | ///
32 | private void RefreshBlackBoardSidePageListView()
33 | {
34 | if (blackBoardSidePageListViewObservableCollection.Count == WhiteboardTotalCount) {
35 | foreach (int index in Enumerable.Range(1, WhiteboardTotalCount))
36 | {
37 | var st = ApplyHistoriesToNewStrokeCollection(TimeMachineHistories[index]);
38 | st.Clip(new Rect(0, 0, (int)inkCanvas.ActualWidth, (int)inkCanvas.ActualHeight));
39 | var pitem = new PageListViewItem()
40 | {
41 | Index = index,
42 | Strokes = st,
43 | };
44 | blackBoardSidePageListViewObservableCollection[index-1] = pitem;
45 | }
46 | } else {
47 | blackBoardSidePageListViewObservableCollection.Clear();
48 | foreach (int index in Enumerable.Range(1, WhiteboardTotalCount)) {
49 | var st = ApplyHistoriesToNewStrokeCollection(TimeMachineHistories[index]);
50 | st.Clip(new Rect(0,0, (int)inkCanvas.ActualWidth, (int)inkCanvas.ActualHeight));
51 | var pitem = new PageListViewItem()
52 | {
53 | Index = index,
54 | Strokes = st,
55 | };
56 | blackBoardSidePageListViewObservableCollection.Add(pitem);
57 | }
58 | }
59 |
60 | var _st = inkCanvas.Strokes.Clone();
61 | _st.Clip(new Rect(0, 0, (int)inkCanvas.ActualWidth, (int)inkCanvas.ActualHeight));
62 | var _pitem = new PageListViewItem()
63 | {
64 | Index = CurrentWhiteboardIndex,
65 | Strokes = _st,
66 | };
67 | blackBoardSidePageListViewObservableCollection[CurrentWhiteboardIndex - 1] = _pitem;
68 |
69 | BlackBoardLeftSidePageListView.SelectedIndex = CurrentWhiteboardIndex -1;
70 | BlackBoardRightSidePageListView.SelectedIndex = CurrentWhiteboardIndex -1;
71 | }
72 |
73 | public static void ScrollViewToVerticalTop(FrameworkElement element, ScrollViewer scrollViewer)
74 | {
75 | var scrollViewerOffset = scrollViewer.VerticalOffset;
76 | var point = new Point(0, scrollViewerOffset);
77 | var tarPos = element.TransformToVisual(scrollViewer).Transform(point);
78 | scrollViewer.ScrollToVerticalOffset(tarPos.Y);
79 | }
80 |
81 |
82 | private void BlackBoardLeftSidePageListView_OnMouseUp(object sender, MouseButtonEventArgs e) {
83 | AnimationsHelper.HideWithSlideAndFade(BoardBorderLeftPageListView);
84 | AnimationsHelper.HideWithSlideAndFade(BoardBorderRightPageListView);
85 | var item = BlackBoardLeftSidePageListView.SelectedItem;
86 | var index = BlackBoardLeftSidePageListView.SelectedIndex;
87 | if (item != null)
88 | {
89 | SaveStrokes();
90 | ClearStrokes(true);
91 | CurrentWhiteboardIndex= index+1;
92 | RestoreStrokes();
93 | UpdateIndexInfoDisplay();
94 | BlackBoardLeftSidePageListView.SelectedIndex = index;
95 | }
96 | }
97 |
98 | private void BlackBoardRightSidePageListView_OnMouseUp(object sender, MouseButtonEventArgs e)
99 | {
100 | AnimationsHelper.HideWithSlideAndFade(BoardBorderLeftPageListView);
101 | AnimationsHelper.HideWithSlideAndFade(BoardBorderRightPageListView);
102 | var item = BlackBoardRightSidePageListView.SelectedItem;
103 | var index = BlackBoardRightSidePageListView.SelectedIndex;
104 | if (item != null)
105 | {
106 | SaveStrokes();
107 | ClearStrokes(true);
108 | CurrentWhiteboardIndex = index + 1;
109 | RestoreStrokes();
110 | UpdateIndexInfoDisplay();
111 | BlackBoardRightSidePageListView.SelectedIndex = index;
112 | }
113 | }
114 |
115 | }
116 | }
117 |
--------------------------------------------------------------------------------
/Ink Canvas/MainWindow_cs/MW_Screenshot.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing.Imaging;
3 | using System.IO;
4 | using System.Runtime.InteropServices;
5 | using System.Windows;
6 |
7 | namespace Ink_Canvas {
8 | public partial class MainWindow : Window {
9 | private void SaveScreenShot(bool isHideNotification, string fileName = null) {
10 | var savePath = Settings.Automation.IsSaveScreenshotsInDateFolders
11 | ? GetDateFolderPath(fileName)
12 | : GetDefaultFolderPath();
13 |
14 | CaptureAndSaveScreenshot(savePath, isHideNotification);
15 |
16 | if (Settings.Automation.IsAutoSaveStrokesAtScreenshot)
17 | SaveInkCanvasStrokes(false, false);
18 | }
19 |
20 | private void SaveScreenShotToDesktop() {
21 | var desktopPath = Path.Combine(
22 | Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),
23 | $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss}.png");
24 |
25 | CaptureAndSaveScreenshot(desktopPath, false);
26 |
27 | if (Settings.Automation.IsAutoSaveStrokesAtScreenshot)
28 | SaveInkCanvasStrokes(false, false);
29 | }
30 |
31 | // 提取公共的截图和保存逻辑
32 | private void CaptureAndSaveScreenshot(string savePath, bool isHideNotification) {
33 | var rc = System.Windows.Forms.SystemInformation.VirtualScreen;
34 |
35 | using (var bitmap = new System.Drawing.Bitmap(rc.Width, rc.Height, PixelFormat.Format32bppArgb))
36 | using (var memoryGraphics = System.Drawing.Graphics.FromImage(bitmap)) {
37 | memoryGraphics.CopyFromScreen(rc.X, rc.Y, 0, 0, rc.Size, System.Drawing.CopyPixelOperation.SourceCopy);
38 |
39 | var directory = Path.GetDirectoryName(savePath);
40 | if (!Directory.Exists(directory)) {
41 | Directory.CreateDirectory(directory);
42 | }
43 |
44 | try {
45 | // 新增双重目录检查
46 | Directory.CreateDirectory(directory); // 防止多线程场景下的竞争条件
47 | bitmap.Save(savePath, ImageFormat.Png);
48 | }
49 | catch (Exception ex) when (ex is IOException ||
50 | ex is UnauthorizedAccessException ||
51 | ex is ExternalException) { // 新增GDI+异常捕获
52 | // 改进备用路径处理
53 | var docPath = Path.Combine(
54 | Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
55 | "Auto Saved - Screenshots",
56 | DateTime.Now.ToString("yyyyMMdd"),
57 | Path.GetFileNameWithoutExtension(savePath) + "_retry.png"); // 添加重试后缀
58 |
59 | try {
60 | var docDir = Path.GetDirectoryName(docPath);
61 | Directory.CreateDirectory(docDir);
62 | bitmap.Save(docPath, ImageFormat.Png);
63 | savePath = docPath;
64 | }
65 | catch (Exception fallbackEx) {
66 | // 最终错误处理
67 | if (!isHideNotification) {
68 | ShowNotification($"截图保存失败: {fallbackEx.Message}");
69 | }
70 | return;
71 | }
72 | }
73 | }
74 |
75 | if (!isHideNotification) {
76 | try {
77 | ShowNotification($"截图成功保存至 {savePath}");
78 | }
79 | catch {
80 | // 防止通知系统自身异常导致崩溃
81 | }
82 | }
83 | }
84 |
85 | // 获取日期文件夹路径
86 | private string GetDateFolderPath(string fileName) {
87 | var basePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Saves");
88 | var dateFolder = DateTime.Now.ToString("yyyyMMdd");
89 | var fullPath = Path.Combine(basePath, "Auto Saved - Screenshots", dateFolder);
90 |
91 | try {
92 | if (!Directory.Exists(fullPath)) {
93 | Directory.CreateDirectory(fullPath);
94 | }
95 | }
96 | catch (Exception ex) when
97 | (ex is IOException ||
98 | ex is UnauthorizedAccessException)
99 | {
100 | // 如果创建失败则使用软件根目录作为最终备选
101 | basePath = AppDomain.CurrentDomain.BaseDirectory;
102 | fullPath = Path.Combine(basePath, "Auto Saved - Screenshots", dateFolder);
103 |
104 | Directory.CreateDirectory(fullPath);
105 | }
106 |
107 | return Path.Combine(fullPath, $"{fileName}.png");
108 | }
109 |
110 | private string GetDefaultFolderPath() {
111 | var basePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Saves");
112 | var screenshotsFolder = Path.Combine(basePath, "Auto Saved - Screenshots");
113 |
114 | try {
115 | if (!Directory.Exists(screenshotsFolder)) {
116 | Directory.CreateDirectory(screenshotsFolder);
117 | }
118 | }
119 | catch (Exception) {
120 | // 如果创建失败则使用文档目录
121 | basePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
122 | screenshotsFolder = Path.Combine(basePath, "Auto Saved - Screenshots");
123 | Directory.CreateDirectory(screenshotsFolder);
124 | }
125 |
126 | return Path.Combine(
127 | screenshotsFolder,
128 | $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss}.png");
129 | }
130 | }
131 | }
--------------------------------------------------------------------------------
/Ink Canvas/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("InkCanvasForClass")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("HARKOTEK Studio")]
12 | [assembly: AssemblyProduct("InkCanvasForClass")]
13 | [assembly: AssemblyCopyright("© Copyright HARKOTEK Studio 2024-now")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | //In order to begin building localizable applications, set
23 | //CultureYouAreCodingWith in your .csproj file
24 | //inside a . For example, if you are using US english
25 | //in your source files, set the to en-US. Then uncomment
26 | //the NeutralResourceLanguage attribute below. Update the "en-US" in
27 | //the line below to match the UICulture setting in the project file.
28 |
29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
30 |
31 |
32 | [assembly: ThemeInfo(
33 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
34 | //(used if a resource is not found in the page,
35 | // or application resource dictionaries)
36 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
37 | //(used if a resource is not found in the page,
38 | // app, or any theme specific resource dictionaries)
39 | )]
40 |
41 |
42 | // Version information for an assembly consists of the following four values:
43 | //
44 | // Major Version
45 | // Minor Version
46 | // Build Number
47 | // Revision
48 | //
49 | // You can specify all the values or you can default the Build and Revision Numbers
50 | // by using the '*' as shown below:
51 | // [assembly: AssemblyVersion("1.0.*")]
52 | [assembly: AssemblyVersion("1.7.0.3")]
53 | [assembly: AssemblyFileVersion("1.7.0.3")]
54 |
--------------------------------------------------------------------------------
/Ink Canvas/Properties/PublishProfiles/FolderProfile.pubxml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 | Release
8 | Any CPU
9 | dist\
10 | FileSystem
11 | <_TargetId>Folder
12 |
13 |
--------------------------------------------------------------------------------
/Ink Canvas/Properties/PublishProfiles/FolderProfile.pubxml.user:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Ink Canvas/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace Ink_Canvas.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Ink_Canvas.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
65 | ///
66 | internal static System.IO.UnmanagedMemoryStream TimerDownNotice {
67 | get {
68 | return ResourceManager.GetStream("TimerDownNotice", resourceCulture);
69 | }
70 | }
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/Ink Canvas/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 此代码由工具生成。
4 | // 运行时版本:4.0.30319.42000
5 | //
6 | // 对此文件的更改可能会导致不正确的行为,并且如果
7 | // 重新生成代码,这些更改将会丢失。
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace Ink_Canvas.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.7.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Ink Canvas/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/ChickenSoup.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ink_Canvas
8 | {
9 | public static class ChickenSoup {
10 | public static string[] OSUPlayerYuLu = new string[] {
11 | "澳洲原神,启动!",
12 | "一眼丁真,鉴定为玩osu!玩的",
13 | "喊MimosaM给我炒两菜",
14 | "不要……不要把背景圖刪掉的說!",
15 | "6秒800PP,I Can!",
16 | "osu! 启动!",
17 | "你说得对,但是osu!,前面忘了,后面忘了",
18 | "换电脑变成残疾人",
19 | "难绷acc",
20 | "牢大:这是串pp图啊",
21 | "你看人家,坚持不刷PP,都在新人群买房了",
22 | "打o不要这么努力吧",
23 | "凹不了一点",
24 | "大神进步好快啊",
25 | "pass和fc之间是天堑",
26 | "4星就是一个巨大的开放暴毙世界(",
27 | "我是要成为owc选手的人!",
28 | "戳完就跳",
29 | "我疑似有点罕见了",
30 | "小时候喝了这个手指学会了强双",
31 | "90bpm熬老头呢",
32 | "艹了,发现我从没fc过一张串图",
33 | "oshit!",
34 | "hso!",
35 | "不好玩!",
36 | "钝角跳真的挺恶心的",
37 | "我草,O!",
38 | "又有人2000了"
39 | };
40 |
41 | public static string[] MingYanJingJu = new string[] {
42 | "老骥伏枥,志在千里;烈士暮年,壮心不已",
43 | "有志者,事竟成",
44 | "有志者自有千方百计,无志者只感千难万难",
45 | "有志的人战天斗地,无志的人怨天恨地",
46 | "有伟大志向的人,都可以成为圣人。",
47 | "人的志向,应在千里之外。",
48 | "人不在于地位的高低,而在于志向的远大。",
49 | "人的志向,应崇高而远大。",
50 | "立志没有所谓过迟",
51 | "鸟不展翅膀难高飞",
52 | "不怕路远,就怕志短",
53 | "当今之世,舍我其谁",
54 | "立志不坚,终不济事",
55 | "鸟贵有翼,人贵有志",
56 | "少年立志要远大,持身要紧严立志不高,则溺于流俗;",
57 | "持身不严,则入于匪辞",
58 | "人若有志,万事可为",
59 | "心志要坚,意趣要乐",
60 | "胸无大志,枉活一世",
61 | "燕雀安知鸿鹄之志哉",
62 | "一人立志,万夫莫敌",
63 | "鹰爱高飞,鸦栖一枝",
64 | "治天下者必先立其志",
65 | "强行者有志",
66 | "志当存高远",
67 | "百学须先立志",
68 | "以天下为己任",
69 | "志,气之帅也",
70 | "才自清明志自高",
71 | "褴褛衣内可藏志",
72 | "无所求则无所获",
73 | "慷慨丈夫志,可以耀锋芒",
74 | "母鸡的理想不过是一把糠",
75 | "男儿千年志,吾生未有涯",
76 | "男儿四方志,岂久困泥沙",
77 | "男子千年志,吾生未有涯",
78 | "穷且益坚,不坠青云之志",
79 | "人生志气立,所贵功业昌",
80 | "生无一锥土,常有四海心",
81 | "无志愁压头,有志能搬山",
82 | "心随朗月高,志与秋霜洁",
83 | "胸有凌云志,无高不可攀",
84 | "雄心志四海,万里望风尘",
85 | "一分事业心能抵十分特权",
86 | "有志登山顶,无志站山脚",
87 | "丈夫清万里,谁能扫一室",
88 | "丈夫四海志,万里犹比邻",
89 | "丈夫志不大,何以佐乾坤",
90 | "丈夫志气薄,儿女安得知",
91 | "志不立,天下无可成之事",
92 | "志高山峰矮,路从脚下伸",
93 | "壮志与毅力是事业的双翼",
94 | "成功是别人失败时还在坚持",
95 | "贫不足羞,可羞是贫而无志",
96 | "虽长不满七尺,而心雄万丈",
97 | "有志者能使石头长出青草来",
98 | "志之难也,不在胜人,在自胜",
99 | "有志始知蓬莱近,无为总觉咫尺远",
100 | "不要在夕阳西下时幻想,要在旭日东升时努力",
101 | "立志是事业的大门,工作是登门入室的的旅途",
102 | "一个人如果胸无大志,既使再有壮丽的举动也称不上是伟人",
103 | "志不立,如无舵这舟,无衔之马,漂荡奔逸,终亦何所底乎",
104 | "有志不在年高,无志空活百岁",
105 | };
106 |
107 | public static string[] GaoKaoPhrases = new string[] {
108 | "以梦为马,不负韶华。祝你高考顺利,未来可期!",
109 | "高考顺利,愿你乘风破浪,前程似锦!",
110 | "愿你高考顺利,不负韶华,梦想成真!",
111 | "高考必胜,愿你展翅高飞,未来可期!",
112 | "愿你不畏困难,勇往直前,高考成绩如你所愿,未来更加光明。",
113 | "高考将至,愿你所学皆精,所考皆通,一鸣惊人,一举夺魁!",
114 | "十年磨一剑,今朝试锋芒。高考顺利,未来可期!",
115 | "恭祝,恭祝,此战青云平步。祝高考金榜题名。",
116 | };
117 | }
118 | }
119 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Cursors/Cursor.cur:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Cursors/Cursor.cur
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Cursors/Pen.cur:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Cursors/Pen.cur
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/Alan-CRL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/Alan-CRL.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/CN-Ironegg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/CN-Ironegg.jpg
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/ChangSakura.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/ChangSakura.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/NetheriteBowl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/NetheriteBowl.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/NotYoojun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/NotYoojun.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/RaspberryKan.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/RaspberryKan.jpg
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/STBBRD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/STBBRD.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/WXRIW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/WXRIW.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/aaaaaaccd.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/aaaaaaccd.jpg
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/clover-yan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/clover-yan.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/dubi906w.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/dubi906w.jpg
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/jiajiaxd.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/jiajiaxd.jpg
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/kengwang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/kengwang.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/wwei.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/wwei.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/DeveloperAvatars/yuwenhui2020.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/DeveloperAvatars/yuwenhui2020.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_add_circle_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_add_circle_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_arrow_circle_left_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_arrow_circle_left_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_arrow_circle_right_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_arrow_circle_right_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_arrow_clockwise_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_arrow_clockwise_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_arrow_rotate_clockwise_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_arrow_rotate_clockwise_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_book_question_mark_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_book_question_mark_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_calendar_sync_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_calendar_sync_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_camera_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_camera_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_clock_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_clock_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_control_button_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_control_button_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_copy_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_copy_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_copy_add_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_copy_add_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_cursorWITHdelete_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_cursorWITHdelete_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_cursor_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_cursor_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_dark_theme_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_dark_theme_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_delete_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_delete_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_dismiss_circle_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_dismiss_circle_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_drag_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_drag_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_dual_screen_span_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_dual_screen_span_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_edit_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_edit_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_flip_horizontal_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_flip_horizontal_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_flip_vertical_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_flip_vertical_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_folder_open_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_folder_open_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_keyboard_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_keyboard_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_lasso_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_lasso_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_people_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_people_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_people_money_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_people_money_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_person_money_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_person_money_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_power_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_power_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_save_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_save_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_scale_fit_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_scale_fit_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_scales_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_scales_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_settings_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_settings_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_shapes_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_shapes_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_signature_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_signature_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_timer_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_timer_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_weather_moon_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_weather_moon_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_weather_sunny_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_weather_sunny_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/ic_fluent_whiteboard_24_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/ic_fluent_whiteboard_24_regular.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-Fluent/party.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-Fluent/party.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/AdmoxBooth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/AdmoxBooth.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/AdmoxWhiteboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/AdmoxWhiteboard.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/Desmos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/Desmos.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/Donview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/Donview.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/EasiCamera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/EasiCamera.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/EasiNote.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/EasiNote.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/EasiNote3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/EasiNote3.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/EasiNote3C.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/EasiNote3C.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/EasiNote5C.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/EasiNote5C.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/HiteAnnotation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/HiteAnnotation.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/HiteBoard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/HiteBoard.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/HiteCamera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/HiteCamera.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/HiteLightBoard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/HiteLightBoard.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/InkCanvas.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/InkCanvas.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/MaxHubWhiteboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/MaxHubWhiteboard.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/PPTTools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/PPTTools.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/Powerpoint.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/Powerpoint.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/Seewo2Annotation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/Seewo2Annotation.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/SeewoPinco.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/SeewoPinco.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/VComYouJiao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/VComYouJiao.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/WPS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/WPS.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/WenXiang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/WenXiang.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/Whiteboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/Whiteboard.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/YiYunVisualPresenter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/YiYunVisualPresenter.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/YiYunWhiteboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/YiYunWhiteboard.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/check-box-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/check-box-background.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/close-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/close-circle.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/down.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/eraser-line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/eraser-line.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/eraser-outline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/eraser-outline.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/arrow.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/centered-circle-dashed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/centered-circle-dashed.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/centered-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/centered-circle.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/centered-oval.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/centered-oval.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/centered-square.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/centered-square.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/cone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/cone.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/cube.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/cube.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/cylinder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/cylinder.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/dashed-line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/dashed-line.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/dotted-line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/dotted-line.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/line.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/paralle-lines.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/paralle-lines.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/geo-icons/square.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/geo-icons/square.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/ica.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/ica.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/icc-transparent-dark-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/icc-transparent-dark-small.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/icc-transparent-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/icc-transparent-dark.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/icc-transparent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/icc-transparent.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/icc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/icc.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/idt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/idt.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/kuanciya.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/kuanciya.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/kuandogeyuanliangwo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/kuandogeyuanliangwo.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/kuandoujiyanhuaji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/kuandoujiyanhuaji.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/kuanneikuhuaji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/kuanneikuhuaji.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/kuanshounvhuaji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/kuanshounvhuaji.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/menu-back-highlighted.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/menu-back-highlighted.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/menu-back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/menu-back.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/minimize.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/minimize.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/penUpright.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/penUpright.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/playCircle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/playCircle.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/pressdown-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/pressdown-background.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/redo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/redo.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/setting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/setting.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/tiebahuaji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/tiebahuaji.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/transparent-grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/transparent-grid.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/twoFingelMove-Blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/twoFingelMove-Blue.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/twoFingelMove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/twoFingelMove.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/undo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/undo.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons-png/up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons-png/up.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/DrawShapeIcon.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/DrawShapeIcon.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/DrawShapeIcon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/Flip.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/Flip.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/Flip.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/Rotate.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/Rotate.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/Rotate.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/Rotate45.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/Rotate90.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeArrowLine.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeArrowLine.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeArrowLine.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCircle.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeCircle.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCircle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCone.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeCone.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCone.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCoordinate1.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeCoordinate1.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCoordinate1.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCoordinate2.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeCoordinate2.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCoordinate2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCoordinate3.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeCoordinate3.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCoordinate3.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCoordinate4.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeCoordinate4.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCoordinate4.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCoordinate5.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeCoordinate5.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCoordinate5.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCuboid.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeCuboid.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCuboid.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCylinder.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeCylinder.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeCylinder.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeDashedCircle.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeDashedCircle.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeDashedCircle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeDashedLine.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeDashedLine.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeDashedLine.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeDotLine.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeDotLine.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeDotLine.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeEllipse.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeEllipse.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeEllipse.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeEllipseCenter.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeEllipseCenter.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeEllipseCenter.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeEllipseCenterWithFocalPoint.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeEllipseCenterWithFocalPoint.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeEllipseCenterWithFocalPoint.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeHyperbola.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeHyperbola.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeHyperbola.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeHyperbolaWithFocalPoint.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeHyperbolaWithFocalPoint.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeHyperbolaWithFocalPoint.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeLine.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeLine.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeLine.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeParabola.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeParabola.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeParabola.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeParabolaWithFocalPoint.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeParabolaWithFocalPoint.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeParabolaWithFocalPoint.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeParallelLine.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeParallelLine.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeParallelLine.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeRectangle.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeRectangle.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeRectangle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeRectangleCenter.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeRectangleCenter.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeRectangleCenter.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeTetrahedron.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/Icons/ShapeTetrahedron.ai
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Icons/ShapeTetrahedron.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/PresentationExample/bottombar-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/PresentationExample/bottombar-dark.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/PresentationExample/bottombar-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/PresentationExample/bottombar-white.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/PresentationExample/page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/PresentationExample/page.jpg
--------------------------------------------------------------------------------
/Ink Canvas/Resources/PresentationExample/sidebar-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/PresentationExample/sidebar-dark.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/PresentationExample/sidebar-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/PresentationExample/sidebar-white.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/PresentationExample/toolbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/PresentationExample/toolbar.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Styles/Dark.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 | #FFcccccc
7 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/Styles/Light.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 | #18181b
7 |
--------------------------------------------------------------------------------
/Ink Canvas/Resources/TimerDownNotice.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/TimerDownNotice.wav
--------------------------------------------------------------------------------
/Ink Canvas/Resources/hatsune-miku1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/hatsune-miku1.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/icc.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/icc.ico
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/blackboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/blackboard.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/checked-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/checked-black.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/checked-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/checked-white.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/chevron-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/chevron-left.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/circle-eraser-lined.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/circle-eraser-lined.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/circle-eraser-solid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/circle-eraser-solid.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/close-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/close-white.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/cursor-clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/cursor-clear.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/cursor-lined.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/cursor-lined.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/cursor-solid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/cursor-solid.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/end-slides-show.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/end-slides-show.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/eraser-lined.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/eraser-lined.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/eraser-solid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/eraser-solid.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/eye-off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/eye-off.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/eye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/eye.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/gesture-enabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/gesture-enabled.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/gesture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/gesture.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/grid.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/hand-move.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/hand-move.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/highlighter-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/highlighter-white.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/lasso-select-lined.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/lasso-select-lined.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/lasso-select-solid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/lasso-select-solid.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/multi-touch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/multi-touch.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/osu-lazer-triangles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/osu-lazer-triangles.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/pen-lined.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/pen-lined.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/pen-solid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/pen-solid.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/pen-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/pen-white.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/redo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/redo.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/rotate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/rotate.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/shapes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/shapes.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/trash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/trash.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/undo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/undo.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/unfold-chevron.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/unfold-chevron.png
--------------------------------------------------------------------------------
/Ink Canvas/Resources/new-icons/zoom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/Ink Canvas/Resources/new-icons/zoom.png
--------------------------------------------------------------------------------
/Ink Canvas/Windows/CycleProcessBar.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Ink Canvas/Windows/NamesInputWindow.xaml:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
15 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Ink Canvas/Windows/NamesInputWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using Ink_Canvas.Helpers;
2 | using System.IO;
3 | using System.Windows;
4 |
5 | namespace Ink_Canvas
6 | {
7 | ///
8 | /// Interaction logic for NamesInputWindow.xaml
9 | ///
10 | public partial class NamesInputWindow : Window
11 | {
12 | public NamesInputWindow()
13 | {
14 | InitializeComponent();
15 | AnimationsHelper.ShowWithSlideFromBottomAndFade(this, 0.25);
16 | }
17 |
18 | string originText = "";
19 |
20 | private void Window_Loaded(object sender, RoutedEventArgs e)
21 | {
22 | if (File.Exists(App.RootPath + "Names.txt"))
23 | {
24 | TextBoxNames.Text = File.ReadAllText(App.RootPath + "Names.txt");
25 | originText = TextBoxNames.Text;
26 | }
27 | }
28 |
29 | private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
30 | {
31 | if (originText != TextBoxNames.Text)
32 | {
33 | var result = MessageBox.Show("是否保存?", "名单导入", MessageBoxButton.YesNo);
34 | if (result == MessageBoxResult.Yes)
35 | {
36 | File.WriteAllText(App.RootPath + "Names.txt", TextBoxNames.Text);
37 | }
38 | }
39 | }
40 |
41 | private void Button_Click(object sender, RoutedEventArgs e)
42 | {
43 | Close();
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Ink Canvas/Windows/OperatingGuideWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using Ink_Canvas.Helpers;
2 | using System.Windows;
3 | using System.Windows.Input;
4 |
5 | namespace Ink_Canvas
6 | {
7 | ///
8 | /// Interaction logic for StopwatchWindow.xaml
9 | ///
10 | public partial class OperatingGuideWindow : Window
11 | {
12 | public OperatingGuideWindow()
13 | {
14 | InitializeComponent();
15 | AnimationsHelper.ShowWithSlideFromBottomAndFade(this, 0.25);
16 | }
17 |
18 | private void BtnClose_MouseUp(object sender, MouseButtonEventArgs e)
19 | {
20 | Close();
21 | }
22 |
23 | private void WindowDragMove(object sender, MouseEventArgs e)
24 | {
25 | if (e.LeftButton == MouseButtonState.Pressed) DragMove();
26 | }
27 |
28 | private void BtnFullscreen_MouseUp(object sender, MouseButtonEventArgs e) {
29 | if (WindowState == WindowState.Normal) {
30 | WindowState = WindowState.Maximized;
31 | SymbolIconFullscreen.Symbol = iNKORE.UI.WPF.Modern.Controls.Symbol.BackToWindow;
32 | } else {
33 | WindowState = WindowState.Normal;
34 | SymbolIconFullscreen.Symbol = iNKORE.UI.WPF.Modern.Controls.Symbol.FullScreen;
35 | }
36 | }
37 |
38 | private void SCManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e) {
39 | e.Handled = true;
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/Ink Canvas/Windows/YesOrNoNotificationWindow.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/Ink Canvas/Windows/YesOrNoNotificationWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows;
3 | using System.Windows.Controls;
4 |
5 | namespace Ink_Canvas
6 | {
7 | ///
8 | /// Interaction logic for RestoreHiddenSlidesWindow.xaml
9 | ///
10 | public partial class YesOrNoNotificationWindow : Window
11 | {
12 | private readonly Action _yesAction;
13 | private readonly Action _noAction;
14 | private readonly Action _windowClose;
15 |
16 | public YesOrNoNotificationWindow(string text, Action yesAction = null, Action noAction = null, Action windowClose = null)
17 | {
18 | _yesAction = yesAction;
19 | _noAction = noAction;
20 | _windowClose = windowClose;
21 | InitializeComponent();
22 | Label.Text = text;
23 | }
24 |
25 | private void ButtonYes_Click(object sender, RoutedEventArgs e)
26 | {
27 | if (_yesAction == null)
28 | {
29 | Close();
30 | return;
31 | }
32 |
33 | _yesAction.Invoke();
34 | Close();
35 |
36 | }
37 |
38 | private void ButtonNo_Click(object sender, RoutedEventArgs e)
39 | {
40 | if (_noAction == null)
41 | {
42 | Close();
43 | return;
44 | }
45 |
46 | _noAction.Invoke();
47 | Close();
48 | }
49 |
50 | private void Window_Closed(object sender, EventArgs e) {
51 | _windowClose.Invoke();
52 | }
53 | }
54 | }
--------------------------------------------------------------------------------
/Ink Canvas/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
54 |
63 |
64 |
65 |
66 | PerMonitorV2,PerMonitor
67 |
68 | true
69 |
70 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
89 |
90 |
91 |
92 |
93 |
94 |
--------------------------------------------------------------------------------
/Manual.md:
--------------------------------------------------------------------------------
1 | # Ink Canvas 使用说明
2 |
3 | ## 目录
4 | [一、介绍](#intro)
5 | [二、用法](#usage)
6 | [三、技巧](#skill)
7 | [四、感谢](#thank)
8 | [五、图片](#pictu)
9 | ## Ink Canvas 是什么?
10 | Ink Canvas 画板是一款轻量级画板软件,其针对希沃白板设备进行了特别优化,与预装的“希沃白板 5”软件相比,启动速度大幅度提升(提升5-10 倍),系统资源占用更小,使用体验更佳。
11 |
12 | 可以双指缩放拖动甚至旋转,并针对Microsoft PowerPoint 进行优化,可以在放映幻灯片的时候打开白板或黑板进行板书,提高课堂效率。拥有智能墨迹识别技术,可识别圆形等图形,并自动转换。
13 |
14 | 统一幻灯片放映时和白板/黑板模式下的墨迹书写体验,形成统一操作习惯。
15 |
16 | ### Ink Canvas 模式
17 |
18 | * **幻灯片模式**
19 | * 在幻灯片模式下支持画笔、橡皮擦、图形工具、快捷翻页按键、换页自动换笔迹等功能
20 | * 自动保存幻灯片下的墨迹,下次打开时墨迹将自动恢复,并且随时可修改。
21 | * 如果有隐藏的幻灯片页面,将询问是否取消隐藏
22 | * **画板模式(黑/白板模式)**
23 | * 在画板模式下有着一整个类似希沃白板一样的画板
24 | * 支持添加新页面和页面切换
25 | * 支持多指书写:黑板模式界面左下角人像图标为切换按钮
26 | * 默认是黑板,可以在设置中调成白板
27 | * **屏幕画笔模式**
28 | * 在屏幕画笔模式下可以显示原屏幕内容的同时将鼠标调为画笔书写授课笔迹
29 |
30 | ### Ink Canvas 特性
31 | * 笔细的一头可以在屏幕上留下墨迹,而粗的一头可以当作橡皮擦(按笔画擦除),不必手动切换模式
32 | * 如果觉得翻转笔比较麻烦,可以直接用手指或倾斜笔尖精确擦除小范围墨迹
33 | * 手掌手指并拢,直接放在屏幕上,则是大橡皮(按区域擦除),此动作的识别速度和精度比“希沃白板 5”要高,即碰即擦,无需等待
34 | * 启动速度快
35 | * 更换画笔颜色更方便,不必先点击笔,再切换,清屏也更方便
36 | * 自动查杀希沃部分软件
37 | * 单条或多条墨迹选中后缩放、旋转、移动、克隆
38 | * 全屏幕笔迹双指手势缩放(旋转和拖动也是双指手势)
39 | * 图形绘制(支持长按一直选中)
40 | 直线、虚线、带箭头直线
41 | 多条平行线,带焦点和不带焦点的椭圆、双曲线、抛物线。
42 | 正圆、虚线圆,圆柱、圆锥、长方体
43 | 坐标系(平面直角坐标系,空间直角坐标系)
44 | * 墨迹转图形,目前可实现智能识别圆、三角形、特殊四边形
45 | 自动转换为规范图形。可自动识别同心圆,相切圆,可自动识别球的截面圆
46 |
47 | ### Ink Canvas 功能
48 | * **倒计时**:美观的 UI,并可以以接近全屏的大小显示
49 | * **抽奖**:可导入名单(建议搭配 Excel 使用),可设置抽取人数
50 | * **保存墨迹**:默认保存至 `文档\Ink Canvas Strokes`
51 | * **截图**:任意模式模式下(包括鼠标)下点击相机图标截图并自动保存至 `图片\Ink Canvas Screenshots`,可在设置中开启“截图时自动保存墨迹”
52 | * **幻灯片自动保存墨迹**:默认保存至 `文档\Ink Canvas Strokes`
53 | * **墨迹回放**:从头自动书写一遍屏中墨迹
54 |
55 |
56 | ## 用法
57 | ### 画笔设置
58 | * **颜色**:在“画笔模式”下直接点击主界面的颜色球即可
59 | * **粗细**:点击“设置”齿轮,在“画板”——“画笔粗细”中调整,默认5
60 | * **笔锋**:在“设置”齿轮中,有根据“速度”和“尾迹”绘制笔锋,让笔迹更美观
61 | ### 橡皮擦使用
62 | * **笔迹擦除**:单击一次使图标变为灰色可按笔迹擦除内容
63 | * **范围擦除**:单击多一次使图标变蓝色可按提示图案范围擦除
64 | * **手掌擦除**:在画笔模式下按压手掌即可起到橡皮擦擦除功能(部分屏幕不支持)
65 | ### 绘制预设图形
66 | * **正圆**:确定圆心时可选用预设在“原点”位置点击,再拖动鼠标完成正圆绘制
67 | * **抛物线**:可以在“原点”位置点击,再拖动鼠标
68 | * **双曲线**:在“原点”位置点击拖动鼠标,先确定渐近线,然后确定实轴和虚轴
69 | * **椭圆**:在“原点”位置点击拖动鼠标,然后确定长轴和短轴(椭圆和双曲线都可以选择有无显示焦点的预设)
70 | * **长方体**:先确定正视图,然后再次点击,确定侧视宽
71 | * **圆锥、圆柱**:一气呵成
72 | * **平面直角坐标系**:有多种预设,图标中两线交点上下左右的长边为实际绘制边。
73 | * **空间直角坐标系**:三轴同时绘制
74 | * **平行线**:从一端到另一端,适合绘制匀强电场的电场线,并针对特殊角度优化
75 | ### ppt放映模式
76 | * **翻页**:屏幕中无笔迹时可以多指并排上下滑动翻页,以及控件和键盘方向键翻页
77 | * **保存**:ppt中的笔迹自动保存,还可以移动笔迹文件夹到其他电脑正常使用原笔迹
78 | ppt模式下打开的内置画板和正常打开的画板一样的,可能需要用户自行关注保存问题
79 | ### 自动墨迹识别(Ink To Shape)
80 | 1. 尽可能画得标准和规范一些
81 | 2. 正圆内画椭圆,可完成截面圆、同心椭圆(适用于天体轨迹)的识别
82 | 3. 可自动完成同心圆、相切圆的识别(内切、外切)
83 |
84 | ### 预览界面
85 |
86 | ## 技巧
87 | 1. 双击“清屏”按钮即可在清屏的同时隐藏画板,相当于点击“清屏”和“隐藏画板”两个按钮。
88 | 2. 一不小心擦错了,点击“撤销”按钮即可撤销,再次点击即可恢复。
89 | 3. 如果需要关闭Ink Canvas画板,可在设置中找到关闭按钮。
90 | 4. 在任意时刻,点击“黑板”按钮即可进入黑板。
91 | 5. 空间不够写时,可以双指向上滑动来挪动原有墨迹,也可以双指缩放以腾出空间。
92 | 6. 找不到“橡皮”按钮?笔反过来就是橡皮了!如果觉得翻转笔比较麻烦,可以直接用手指或倾斜笔尖精确擦除小范围墨迹。大范围擦除可以通过并拢手指使用手掌或手背,甚至黑板擦、抹布来完成。建议使用手背而非手掌,因为手掌上汗较多,在屏幕上滑动时摩擦较大,且较大的接触面积可能导致误识别为多指(多指缩放)的问题。
93 |
94 | ## 感谢
95 | 特别感谢 [yuwenhui2020](https://github.com/yuwenhui2020) 为 ` Ink Canvas 使用说明` 做出的贡献!
96 |
97 | ## 图片版说明
98 |
99 | 此为带图标的简易说明
100 | 
101 | 图片预览https://yuwenhui2020.github.io/ink/BHH~7AJ6N7OMLT095LO(LQJ.png
102 |
103 |
--------------------------------------------------------------------------------
/UpdateLog.md:
--------------------------------------------------------------------------------
1 | 1. 更新了自动更新
2 |
--------------------------------------------------------------------------------
/icc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/InkCanvasForClass/community/8586735ca88c5ba57c49d0e42ef4dc4bd334a1aa/icc.png
--------------------------------------------------------------------------------
/privacy.txt:
--------------------------------------------------------------------------------
1 | 隐私政策
2 | 本软件指 Ink Canvas 画板软件(以下称本软件)。
3 | 本软件重视用户隐私,本软件尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本软件会按照本隐私权政策的规定使用和披露您的个人信息。
4 | 除本隐私权政策另有规定外,在未征得您事先许可的情况下,本软件不会将这些信息对外披露或向第三方提供。本软件会不时更新本隐私权政策。您在同意本软件服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本软件服务使用协议不可分割的一部分。
5 | 1. 适用范围
6 | 1)本软件收集到的您在本软件发布的有关信息数据,包括但不限于参与活动、成交信息及评价详情;
7 | 2)违反法律规定或违反本软件规则行为及本软件已对您采取的措施。
8 | 2.信息使用
9 | a)本软件不会向任何无关第三方提供、出售、出租、分享或交易您的个人信息,除非事先得到您的许可,或该第三方和本软件(含本软件关联公司)单独或共同为您提供服务,且在该服务结束后,其将被禁止访问包括其以前能够访问的所有这些资料。
10 | b)本软件亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本软件平台用户如从事上述活动,一经发现,本软件有权立即终止与该用户的服务协议。
11 | c)为服务用户的目的,本软件可能通过使用您的个人信息,向您提供您感兴趣的信息,包括但不限于向您发出产品和服务信息,或者与本软件合作伙伴共享信息以便他们向您发送有关其产品和服务的信息(后者需要您的事先同意)。
12 | 3.信息披露
13 | 在如下情况下,本软件将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息:
14 | 1)经您事先同意,向第三方披露;
15 | 2)为提供您所要求的产品和服务,而必须和第三方分享您的个人信息;
16 | 3)根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露;
17 | 4)如您出现违反中国有关法律、法规或者本软件服务协议或相关规则的情况,需要向第三方披露;
18 | 5)如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷;
19 | 6)在本软件平台上创建的某一交易中,如交易任何一方履行或部分履行了交易义务并提出信息披露请求的,本软件有权决定向该用户提供其交易对方的联络方式等必要信息,以促成交易的完成或纠纷的解决。
20 | 7)其它本软件根据法律、法规或者网站政策认为合适的披露。
21 | 4. 信息存储和交换
22 | 本软件收集的有关您的信息和资料将保存在本软件及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本软件收集信息和资料所在地的境外并在境外被访问、存储和展示。
23 | 5. Cookie的使用
24 | a)在您未拒绝接受Cookies的情况下,本软件会在您的计算机上设定或取用Cookies
25 | b)您有权选择接受或拒绝接受Cookies。您可以通过修改浏览器设置的方式拒绝接受Cookies。但如果您选择拒绝接受Cookies,则您可能无法登录或使用依赖于Cookies的本软件网络服务或功能。
26 | c)通过本软件所设Cookies所取得的有关信息,将适用本政策。
27 | 6. 信息安全
28 | a) 本软件帐号均有安全保护功能,请妥善保管您的用户名及密码信息。本软件将通过对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在“完善的安全措施”。
29 | b) 在使用本软件网络服务进行网上交易时,您不可避免的要向交易对方或潜在的交易对方披露自己的个人信息,如联络方式或者邮政地址。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本软件用户名及密码发生泄露,请您立即联络本软件客服,以便本软件采取相应措施。
30 |
31 |
--------------------------------------------------------------------------------