From 664ec925e9de7227b6db27ff0881d0af3f315431 Mon Sep 17 00:00:00 2001
From: CJKmkp <2564608840@qq.com>
Date: Sat, 14 Mar 2026 17:58:01 +0800
Subject: [PATCH] add:i18n
---
Ink Canvas/Helpers/TelemetryUploader.cs | 2 +-
Ink Canvas/InkCanvasForClass.csproj | 7 +-
Ink Canvas/MainWindow.xaml | 22 +-
Ink Canvas/Properties/Strings.Designer.cs | 79 ++-
Ink Canvas/Properties/Strings.enUS.xml | 757 ++++++++++++++++++++++
5 files changed, 843 insertions(+), 24 deletions(-)
create mode 100644 Ink Canvas/Properties/Strings.enUS.xml
diff --git a/Ink Canvas/Helpers/TelemetryUploader.cs b/Ink Canvas/Helpers/TelemetryUploader.cs
index 3c5c8ff3..d1f82e7a 100644
--- a/Ink Canvas/Helpers/TelemetryUploader.cs
+++ b/Ink Canvas/Helpers/TelemetryUploader.cs
@@ -94,7 +94,7 @@ namespace Ink_Canvas.Helpers
has_runtime_log = runtimeLogFile != null
};
- // 按你的要求保留现有用户字段行为
+ // 通过 Sentry 上报一个包含遥测信息的事件
string userName = Environment.UserName;
SentrySdk.ConfigureScope(scope =>
{
diff --git a/Ink Canvas/InkCanvasForClass.csproj b/Ink Canvas/InkCanvasForClass.csproj
index cb704148..24eec52f 100644
--- a/Ink Canvas/InkCanvasForClass.csproj
+++ b/Ink Canvas/InkCanvasForClass.csproj
@@ -586,8 +586,11 @@
-
- Ink_Canvas.Properties.Strings.en-US.resources
+
+
+
+
+ Ink_Canvas.Properties.Strings.enUS.xml
diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml
index 9f830a51..ec836c63 100644
--- a/Ink Canvas/MainWindow.xaml
+++ b/Ink Canvas/MainWindow.xaml
@@ -4163,18 +4163,28 @@
-
-
-
+
+
+
+
+
+
-
+
diff --git a/Ink Canvas/Properties/Strings.Designer.cs b/Ink Canvas/Properties/Strings.Designer.cs
index db9baf69..ee51ee34 100644
--- a/Ink Canvas/Properties/Strings.Designer.cs
+++ b/Ink Canvas/Properties/Strings.Designer.cs
@@ -6,6 +6,8 @@
//------------------------------------------------------------------------------
using System.Globalization;
+using System.Collections;
+using System.Collections.Generic;
using System.Resources;
using System.Runtime.CompilerServices;
@@ -17,6 +19,9 @@ namespace Ink_Canvas.Properties
[CompilerGenerated]
public static class Strings
{
+ private const string EmbeddedEnUsResxName = "Ink_Canvas.Properties.Strings.enUS.xml";
+ private static readonly object EnUsLock = new object();
+ private static Dictionary _embeddedEnUs;
private static ResourceManager _resourceMan;
private static CultureInfo _resourceCulture;
@@ -52,23 +57,67 @@ namespace Ink_Canvas.Properties
public static string GetString(string key)
{
var culture = _resourceCulture ?? CultureInfo.CurrentUICulture;
+ if (IsEnglishCulture(culture))
+ {
+ var enUsMap = GetEmbeddedEnUsMap();
+ if (enUsMap.TryGetValue(key, out var enValue))
+ {
+ return enValue;
+ }
+ }
return ResourceManager.GetString(key, culture);
}
- public static string Nav_Plugins => ResourceManager.GetString(nameof(Nav_Plugins), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "插件";
- public static string Nav_Startup => ResourceManager.GetString(nameof(Nav_Startup), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "启动设置";
- public static string Nav_Canvas => ResourceManager.GetString(nameof(Nav_Canvas), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "画布设置";
- public static string Nav_CrashAction => ResourceManager.GetString(nameof(Nav_CrashAction), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "崩溃处理";
- public static string Nav_Gesture => ResourceManager.GetString(nameof(Nav_Gesture), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "手势";
- public static string Nav_InkRecognition => ResourceManager.GetString(nameof(Nav_InkRecognition), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "墨迹识别";
- public static string Nav_PPT => ResourceManager.GetString(nameof(Nav_PPT), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "PPT";
- public static string Nav_Advanced => ResourceManager.GetString(nameof(Nav_Advanced), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "高级";
- public static string Nav_Automation => ResourceManager.GetString(nameof(Nav_Automation), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "自动化";
- public static string Nav_RandomWindow => ResourceManager.GetString(nameof(Nav_RandomWindow), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "随机选人";
- public static string Nav_Theme => ResourceManager.GetString(nameof(Nav_Theme), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "主题";
- public static string Nav_Shortcuts => ResourceManager.GetString(nameof(Nav_Shortcuts), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "快捷键";
- public static string Nav_About => ResourceManager.GetString(nameof(Nav_About), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "关于";
- public static string App_Title => ResourceManager.GetString(nameof(App_Title), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "InkCanvasforClass";
- public static string Booth_Resolution_Tooltip => ResourceManager.GetString(nameof(Booth_Resolution_Tooltip), _resourceCulture ?? CultureInfo.CurrentUICulture) ?? "展台/截图分辨率";
+ private static bool IsEnglishCulture(CultureInfo culture)
+ {
+ if (culture == null) return false;
+ if (culture.Name.StartsWith("en", System.StringComparison.OrdinalIgnoreCase)) return true;
+ return culture.TwoLetterISOLanguageName.Equals("en", System.StringComparison.OrdinalIgnoreCase);
+ }
+
+ private static Dictionary GetEmbeddedEnUsMap()
+ {
+ if (_embeddedEnUs != null) return _embeddedEnUs;
+ lock (EnUsLock)
+ {
+ if (_embeddedEnUs != null) return _embeddedEnUs;
+ var map = new Dictionary(System.StringComparer.Ordinal);
+ var asm = typeof(Strings).Assembly;
+ using (var stream = asm.GetManifestResourceStream(EmbeddedEnUsResxName))
+ {
+ if (stream != null)
+ {
+ using (var reader = new ResXResourceReader(stream))
+ {
+ foreach (DictionaryEntry entry in reader)
+ {
+ if (entry.Key is string k && entry.Value is string v)
+ {
+ map[k] = v;
+ }
+ }
+ }
+ }
+ }
+ _embeddedEnUs = map;
+ return _embeddedEnUs;
+ }
+ }
+
+ public static string Nav_Plugins => GetString(nameof(Nav_Plugins)) ?? "插件";
+ public static string Nav_Startup => GetString(nameof(Nav_Startup)) ?? "启动设置";
+ public static string Nav_Canvas => GetString(nameof(Nav_Canvas)) ?? "画布设置";
+ public static string Nav_CrashAction => GetString(nameof(Nav_CrashAction)) ?? "崩溃处理";
+ public static string Nav_Gesture => GetString(nameof(Nav_Gesture)) ?? "手势";
+ public static string Nav_InkRecognition => GetString(nameof(Nav_InkRecognition)) ?? "墨迹识别";
+ public static string Nav_PPT => GetString(nameof(Nav_PPT)) ?? "PPT";
+ public static string Nav_Advanced => GetString(nameof(Nav_Advanced)) ?? "高级";
+ public static string Nav_Automation => GetString(nameof(Nav_Automation)) ?? "自动化";
+ public static string Nav_RandomWindow => GetString(nameof(Nav_RandomWindow)) ?? "随机选人";
+ public static string Nav_Theme => GetString(nameof(Nav_Theme)) ?? "主题";
+ public static string Nav_Shortcuts => GetString(nameof(Nav_Shortcuts)) ?? "快捷键";
+ public static string Nav_About => GetString(nameof(Nav_About)) ?? "关于";
+ public static string App_Title => GetString(nameof(App_Title)) ?? "InkCanvasforClass";
+ public static string Booth_Resolution_Tooltip => GetString(nameof(Booth_Resolution_Tooltip)) ?? "展台/截图分辨率";
}
}
diff --git a/Ink Canvas/Properties/Strings.enUS.xml b/Ink Canvas/Properties/Strings.enUS.xml
new file mode 100644
index 00000000..6ca0619c
--- /dev/null
+++ b/Ink Canvas/Properties/Strings.enUS.xml
@@ -0,0 +1,757 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Plugins
+
+
+ Startup
+
+
+ Canvas
+
+
+ Crash Action
+
+
+ Gesture
+
+
+ Ink Recognition
+
+
+ PPT
+
+
+ Advanced
+
+
+ Automation
+
+
+ Random Picker
+
+
+ Theme
+
+
+ Shortcuts
+
+
+ About
+
+
+ InkCanvasforClass
+
+
+ Booth / Screenshot resolution
+
+ Gesture
+ Appearance
+ PPT
+ Advanced
+ Automation
+ Random Picker
+ Shortcuts
+ Collapse sidebar
+ Show sidebar
+ Control via icc:// protocol
+ Settings
+ Changes are saved automatically; some require restart.
+ Restart
+ Reset
+ Exit
+ Mode
+ Choose run mode. In PPT-only mode the app is hidden until slide show. (Experimental)
+ Normal
+ PPT only
+ New settings window
+ Open a new settings window. (In development)
+ Open new settings
+ Plugins
+ Extend Ink Canvas with plugins. Enable, disable, or load custom plugins.
+ Open plugin manager
+ Startup
+ No-focus mode
+ Borderless
+ Topmost
+ UIA topmost
+ # UIA topmost requires admin to take effect.
+ Auto-update
+ Silent update
+ # Silent update installs when app is idle.
+ Update channel
+ Stable (Release)
+ Preview
+ Beta
+ # Stable for reliability; Preview for new features.
+ Check for updates
+ # Check and download now.
+ Version fix
+ # Download and install latest for current channel.
+ Rollback
+ # Open rollback page.
+ # When silent update is off, you will be prompted after download.
+ Silent update time range
+ Start time
+ End time
+ # If end < start…
+ Run at login
+ Minimize to sidebar at startup
+ Canvas & ink
+ Show pen cursor
+ Pressure-sensitive touch
+ # Touch devices will support pressure.
+ Ignore pressure
+ # Ignore all device pressure.
+ Eraser size
+ Very small
+ Small
+ Medium
+ Large
+ Very large
+ # Takes effect on next area eraser use.
+ Hide ink when leaving canvas
+ # When enabled…
+ Clear ink history when clearing
+ Clear images with canvas
+ Compress images >1920×1080
+ Keep hyperbola asymptotes
+ Yes
+ No
+ Ask each time
+ # Disabling may cause undo bugs.
+ Show circle center
+ WPF default Bezier smoothing
+ Advanced curve smoothing (recommended)
+ Ink fade
+ # Ink will not be drawn on canvas when enabled.
+ Ink fade time
+ Hide fade in pen menu
+ # Fade control will be hidden in pen context menu.
+ Color
+ Default
+ Black
+ White
+ Red
+ Yellow
+ Blue
+ Green
+ Orange
+ Purple
+ Update downloaded. It will install when you close the app.
+ Update ready
+ Update download failed. Please check your network and try again.
+ Download failed
+ Version {0} skipped; you will not be prompted until a newer version is released.
+ Version skipped
+ An unexpected error occurred. Save your ink and restart the app.
+ Too many restarts
+ App has restarted 5 times. Auto-restart stopped. Contact the developer or check the system.
+ Starting Ink Canvas...
+ Crash action
+ Choose what to do when an unhandled exception occurs:
+ Silent restart
+ No action
+ # Silent restart: automatically restart without prompt. No action: only log, do not restart.
+ Gestures
+ Auto-toggle two-finger move in/out of whiteboard
+ # When enabled: leaving canvas disables two-finger move; entering whiteboard enables it.
+ Allow rotate & scale selected ink
+ # Allows scaling selected ink with two or more fingers (independent of rotate setting).
+ Enable palm eraser
+ Palm eraser sensitivity
+ Low sensitivity
+ Medium sensitivity
+ High sensitivity
+ # Low: larger area/more touches required (less false positive); High: easier to trigger but may mis-detect fingers.
+ Ink correction
+ Enable ink recognition
+ Block fake pressure on corrected rectangles
+ Block fake pressure on corrected triangles
+ Correct freehand triangles
+ Correct freehand rectangles
+ Correct circles and ellipses
+ Auto-straighten lines
+ Length threshold
+ Sensitivity
+ High-precision straightening
+ # When enabled, lines longer than the threshold will be straightened. Sensitivity 0.05–2.0: smaller = stricter; larger = easier to treat as straight. High-precision samples every 10px for better judgement.
+ Line endpoint snapping
+ Snapping distance
+ Personalization
+ Theme
+ Light theme
+ Dark theme
+ Follow system
+ Enable startup animation
+ Startup animation style
+ Random
+ Follow seasons
+ Spring
+ Summer
+ Autumn
+ Winter
+ Year-of-Horse special
+ Floating toolbar icon
+ “ICC-CE” default
+ “ICC-CE” no shadow
+ “ICC-CE” dark
+ “ICC-CE” dark breathing
+ “ICC-CE” white transparent
+ “ICC-CE” black transparent
+ Coolapk cross-eye emoji
+ Coolapk abused emoji
+ Coolapk grin emoji
+ Coolapk underwear emoji
+ Coolapk green-hat Doge
+ Tieba emoji
+ Custom floating icon
+ Upload
+ Manage
+ Floating toolbar scale
+ Floating toolbar opacity
+ Floating bar opacity in PPT
+ # Takes effect after re-entering slide show
+ Show nib-mode button in palette
+ Whiteboard UI 80% scale
+ Show time and date in whiteboard
+ Show quotes in whiteboard
+ Where is the quote from?
+ osu! player quotes
+ Inspirational mottos
+ Gaokao blessings
+ Hitokoto API
+ Custom
+ Enable quick panel in docked mode
+ Un-dock button icon
+ Arrow
+ Pen
+ Floating bar buttons
+ Use legacy floating bar UI
+ Show shape button
+ Show undo button
+ Show redo button
+ Show clear button
+ Show whiteboard button
+ Show hide button
+ Show lasso select button
+ Show clear+mouse button
+ Show quick palette
+ Quick palette display mode
+ Single row (6 colors)
+ Double row (8 colors)
+ Eraser button display
+ Show both
+ Area eraser only
+ Line eraser only
+ Hide all
+ Taskbar tray icon
+ Enable tray icon
+ PPT integration
+ These settings apply during slide show and override others.
+ Microsoft PowerPoint support
+ PowerPoint enhancement
+ Steal focus to skip animations (PPT)
+ Use ROT integration
+ WPS support
+ Kill WPP process (avoid leftovers)
+ # When disabled, leftover WPP processes may cause slow close or cannot exit completely.
+ # If you only use PowerPoint, do not enable WPS integration. If you use WPS, it is recommended not to use PowerPoint together.
+ Enabling WPS support may cause lag when closing WPS!
+ # WPS is supported, but MS Office and WPS cannot be supported at the same time. To enable WPS support, make sure “WPS Office compatibility with third-party systems and software” is enabled in the WPS config tool, otherwise WPS cannot be detected.
+ Hide ink when exiting board mode
+ # When this option is on, ink will not be shown in PPT mode if not in annotation mode.
+ Clear ink history when clearing ink
+ Clear images when clearing canvas
+ Auto-compress images when inserting (larger than 1920x1080)
+ PPT page-turn buttons
+ Show page-turn buttons in PPT mode
+ Bottom left
+ Bottom right
+ Left
+ Right
+ Left offset
+ Left opacity
+ Right offset
+ Right opacity
+ # Increase for up, decrease for down; 0 = no offset, centered.
+ Bottom left offset
+ Bottom left opacity
+ Bottom right offset
+ Bottom right opacity
+ # Increase for right, decrease for left; 0 = no offset, centered.
+ Sides
+ Show page number
+ Half opacity
+ Black background
+ Bottom left & right
+ PPT page button clickable
+ # When enabled, clicking the page button opens PowerPoint grid thumbnails. Not supported in WPS.
+ PPT long-press to turn page
+ # When enabled, long-press on PPT page button to turn pages continuously.
+ # With UIA topmost on, app needs admin to stay on top. To turn off, fully quit then start again; restart will not disable it.
+ Silent update
+ # Silent update installs when the app is idle; no manual action needed.
+ Update channel
+ Stable (Release)
+ Preview
+ Beta
+ # Stable: reliable updates. Preview: new features with better stability than Beta. Beta: earliest new features.
+ Check for updates
+ # Check and download the latest version now.
+ Repair installation
+ # Repair downloads the latest build for the selected channel and reinstalls; use to fix broken installs.
+ Rollback to previous version
+ # Opens a page to manually roll back to an earlier version.
+ # When silent update is off, you will be prompted after download. When on, every 10 minutes the app checks: 1) within silent-update time window 2) not in writing mode 3) not in canvas. If all pass, it will close and update.
+ Silent update time window
+ Start time
+ End time
+ # If end < start, end is next day. If start = end, window is 24h.
+ Run at startup
+ Dock to sidebar after startup
+ Canvas and ink
+ Show pen cursor
+ Enable pressure-sensitive touch
+ # When on, touch screens that support pressure will show pressure; for devices not recognized by the system.
+ Ignore pressure
+ # When on, all strokes use uniform thickness; mutually exclusive with pressure-sensitive touch.
+ Eraser size
+ Very small
+ Small
+ Medium
+ Large
+ Very large
+ # Change takes effect next time you use area eraser.
+ Keep hyperbola asymptotes
+ Yes
+ No
+ Ask each time
+ # If not kept, undo-related bugs may occur.
+ Show circle center when drawing
+ Use WPF default Bezier smoothing
+ Use advanced curve smoothing (recommended)
+ Enable ink fade
+ # When on, ink is not committed to canvas; it fades after the set time.
+ Ink fade time
+ Hide ink fade control in pen menu
+ # When on, the pen context menu will not show the ink fade control.
+ Enable brush auto-restore
+ # When on, temporary brush changes will restore at the configured time(s) to the color/opacity/width set here.
+ Auto-restore time points (HH:mm, multiple with ;)
+ Restore color
+ Default
+ Black
+ White
+ Red
+ Yellow
+ Blue
+ Green
+ Orange
+ Purple
+ Restore stroke width
+ Restore opacity
+ Switch back to annotation after eraser
+ # When on, after erasing, staying idle for a while will switch back to annotation mode.
+ Auto switch delay
+ # If you erase again within the delay, the timer resets.
+ # When on, line endpoints near other endpoints will snap and connect.
+ Enter annotation mode when starting PPT slide show
+ Conflicts with "Auto fold when playing PPT" in Automation!
+ Allow two-finger gestures in slide show
+ Allow finger gesture to turn slides
+ # When canvas is on, finger swipe (not pen) can turn slides in show mode when canvas has no ink.
+ Show gesture buttons in PPT slide show
+ # When on, gesture buttons are shown in PPT slide show.
+ PPT time capsule
+ # When on, show time capsule in PPT show; can replace minimized timer window.
+ Time capsule position:
+ Top left
+ Top right
+ Top center
+ Show quick panel in PPT slide show
+ # When off, quick panel is hidden in PPT slide show.
+ Auto screenshot on slide change
+ # When on, auto-screenshot when turning page with ink on slide.
+ Auto-save slide ink
+ # When on, ink is saved when ending slide show and loaded next time (same file and page).
+ Remember and prompt last slide position
+ # When on, last page is recorded; choose Yes to jump to it.
+ Go to first slide when entering show
+ Warn about hidden slides
+ Warn if auto-play is enabled
+ Advanced
+ Adjust when finger-touch shows circle eraser or palm eraser is much larger than palm
+ Special screen mode
+ Touch multiplier
+ Tap with pen in the area below to estimate touch size multiplier
+ # Value is for reference only
+ Bind eraser to touch size multiplier
+ # BoundsWidth is used as contact area threshold
+ Quad IR mode
+ Enable logging
+ Save logs by date
+ # Log files over 512 KB are auto-deleted. With date save, logs go to Logs folder; folder is cleared when over 5 MB.
+ Confirm exit with dialog
+ Enable FullScreenHelper
+ Experimental
+ # Thanks to lindexi for FullScreenHelper; reduces taskbar pop-up and supports multi-monitor fullscreen. Disable if you see odd issues; restart ICC to apply.
+ Enable AvoidFullScreenHelper
+ # Avoid canvas fullscreen; may fix taskbar not on top and Win11 taskbar unclickable. Can cause floating bar offset with AppBar on left/top. Restart ICC to apply.
+ Enable EdgeGestureUtil
+ More features
+ Timer
+ Random draw
+ Single draw
+ Save
+ Open...
+ Replay
+ Screenshot
+ Manual
+ Settings
+ Single draw
+ Random draw
+ Timer
+ Whiteboard
+ Exit slide show
+ Show
+ Exit
+ Settings backup & restore
+ # You can manually back up current settings or restore previous backups; backups are also created automatically before updates.
+ Backup before update
+ Periodic auto-backup
+ Backup interval
+ 1 day
+ 3 days
+ 7 days
+ 14 days
+ 30 days
+ (default: 7 days)
+ Backup now
+ Restore backup
+ Config profiles & hot reload
+ # Selecting a profile switches and hot-reloads it; \"Save as\" saves current settings as a new profile.
+ Profile:
+ Delete profile
+ Save as profile
+ Automation
+ Auto fold
+ Seewo Whiteboard 5
+ Seewo Visual Presenter
+ Seewo Whiteboard 3
+ Seewo Lite Whiteboard
+ Seewo Lite Whiteboard 5C
+ Seewo Pinco
+ HiteBoard
+ Hite visual presenter
+ Hite Lite Whiteboard
+ WenXiang Whiteboard
+ Microsoft Whiteboard
+ Admox Whiteboard
+ Admox visual presenter
+ YiYun Whiteboard
+ YiYun visual presenter
+ MaxHub Whiteboard
+ Ignore EN5 desktop annotation window when auto folding
+ Auto fold when entering old ZhongYuan whiteboard
+ Auto fold while playing PPT
+ Keep folded after app exit
+ # When on, apps that trigger auto fold will stay folded even after they exit.
+ Auto kill
+ Auto kill Seewo PPT tools
+ # Killing PPT tools disables Seewo classroom helper. Delete Office.dll in its install folder to stop the PPT toolbar without auto kill.
+ Auto kill Seewo Whiteboard 5
+ Auto kill Hite screen writing
+ Enter annotation after killing Hite screen writing
+ Auto kill YouJiao teacher
+ Auto kill Seewo Desktop 2.0 annotation
+ # Seewo Desktop 2.0 annotation is 64-bit so ICC (32-bit) cannot inspect it deeply; only process name DesktopAnnotation is matched. If you have another app with the same name, keep this off.
+ Kill similar apps
+ Auto kill Ink Canvas and IC+
+ Auto kill ICA (both new & old)
+ Auto kill Inkeys (new only)
+ File association
+ Manage .icstk file association so double-click opens in Ink Canvas.
+ Remove association
+ Check status
+ Register association
+ Floating window interceptor
+ Detect and block floating windows from similar software
+ Enable floating window interceptor
+ Interceptor not running
+ Auto screenshot on clear
+ Save screenshots in date folders
+ Auto-save ink when screenshotting
+ Auto-save ink periodically
+ Save interval
+ 1 minute
+ 3 minutes
+ 5 minutes
+ 10 minutes
+ 15 minutes
+ 30 minutes
+ 60 minutes
+ # When on, strokes are auto-saved at the set interval, only when canvas is visible and has ink.
+ Save full-page strokes
+ # When on, auto/manual saves store all pages in fullscreen; multiple pages are packed in one archive (whiteboard strokes open only in whiteboard mode; PPT strokes only in slide show mode).
+ Save as XML format
+ # When on, strokes are saved as XML (ISF) for easier inspection and editing.
+ Minimum ink for auto screenshot
+ Stroke and screenshot save path
+ Browse
+ Set save path to D:\Ink Canvas
+ Set save path to Documents
+ # Please ensure the save folder is writable.
+ Auto delete old strokes and screenshots
+ # When on, all .icstk and .png files in the auto-save folder may be deleted!
+ Retention duration
+ days
+ Cloud storage management
+ Fold mode
+ Switch to annotation when exiting fold mode
+ # When on, exiting fold mode switches back to annotation for convenience.
+ Auto fold floating bar after PPT show
+ # When on, floating bar is auto-folded after exiting PPT slide show.
+ Auto fold when exiting whiteboard
+ # When on, exiting whiteboard folds back to sidebar.
+ Random roll call
+ Show button to edit name list
+ Roll-call window background (legacy UI only)
+ Background:
+ Default background
+ Custom background:
+ Upload
+ Manage
+ Enable random & single-draw buttons
+ Enable quick-draw floating button
+ Use external roll-call app
+ Roll-call type
+ ClassIsland
+ SecRandom
+ NamePicker
+ Single-draw window close delay
+ Max students per single draw
+ New roll-call UI
+ Enable new roll-call UI
+ Use machine learning to avoid repeats
+ History count for avoidance
+ Avoidance weight
+ # ML analyzes recent roll-call history to avoid repeating the same students.
+ Timer settings
+ Use legacy timer button UI
+ New timer UI
+ Enable count-up after timeout
+ Highlight numbers when overtime
+ Timer alert volume
+ Custom alert sound:
+ Select file
+ Reset
+ Progressive reminder
+ Progressive reminder volume
+ Custom progressive reminder audio:
+ Select file
+ Reset
+ About
+ Device information
+ Device ID:
+ Usage frequency:
+ Update priority:
+ Launch count:
+ Total usage time:
+ Loading...
+ Refresh device info
+ I have read and agree to the
+ privacy statement
+ Anonymous usage data upload:
+ Off (no upload)
+ Upload basic data
+ Upload basic + optional data
+ # Before using or distributing this software, you must be aware of the related open-source licenses. This software is based on https://github.com/WXRIW/Ink-Canvas.
+ This software, ICA and Ink Canvas are all open sourced under a license
+ The strong copyleft license requires that complete source code and modifications of the licensed work (including large works using it) be provided under the same license. Copyright and license notices must be retained. Contributors explicitly grant patent rights.
+ Developers:
+ Developer of ICC CE
+ Developer of ICC
+ Developer of ICA
+ Developer of Ink Canvas
+ ICC repository:
+ ICA repository:
+ Ink Canvas repository:
+ Thanks to the following contributors:
+ © 2025-2026 CJK_mkp. All rights reserved.
+ We love open-source forever!
+ Version:
+ Close
+ On
+ Off
+ External URI scheme (icc://)
+ Nib mode BoundsWidth
+ Finger mode BoundsWidth
+ # EdgeGestureUtil is newly introduced in ICC to temporarily block edge gestures when using touch (e.g., on Windows 10: swipe from the left edge to Task View, from the right edge to Action Center; on Windows 11: swipe up from the bottom to open Start). It works by using
+ (When the app window is active and in full-screen mode (or an owned window is active), prevents edge gesture behavior.) If anything is abnormal, turn this option off; it should take effect immediately. (Not available on Windows 7/8.)
+ Enable ForceFullScreen
+ # When a window size change is detected, automatically uses Win32 API to set this window size to the primary monitor size (in device pixels). Turn it off if you don't need it; takes effect immediately.
+ Enable DPIChangeDetection
+ # When a system DPI change is detected, it tries to keep FloatingBar visible. If it goes off-screen, it will attempt to move it into the visible area. (Increasing DPI may trigger this; decreasing DPI won't auto-move—adjust manually.)
+ Enable ResolutionChangeDetection
+ # When a screen resolution change is detected, it tries to keep FloatingBar visible. If it goes off-screen, it will attempt to move it into the visible area. (Reducing resolution may trigger this; if it's still on-screen it won't auto-adjust—adjust manually.)
+ Seewo Whiteboard 3
+ Seewo Whiteboard 5
+ Seewo Whiteboard 5C
+ Seewo Pinco
+ Seewo Pinco pen
+ Seewo PPT Tools
+ AiClass
+ Hite screen writing
+ Changyan smart classroom
+ Changyan PPT
+ Tianyu Education Cloud
+ Seewo desktop pen
+ Seewo desktop sidebar
+ Multi-touch writing
+ Two-finger move
+ Two-finger zoom
+ Two-finger rotate
+ Background
+ Select
+ Pen
+ Highlighter
+ Eraser
+ Eraser options
+ Size
+ Eraser shape
+ Circle
+ Blackboard
+ Clear ink
+ Clear ink & history
+ Stroke eraser
+ Shapes
+ (Long-press in first row to keep selected)
+ Auto-hide
+ Insert image
+ Select image
+ Screenshot
+ Undo
+ Redo
+ Tools
+ Exit
+ New page
+ Previous
+ Next
+ Page
+ Delete this page
+ Test text
+ Exit
+ Thickness
+ Dark
+ Background
+ Hide
canvas
+ Check
+ From start
slideshow
+ End
slideshow
+ One finger
drag
+ Restore
+ Clear
&
Hide
+ Mouse
+ Annotate
+ Clear
+ Visual presenter
+ Captured photos
+ Camera devices
+ Present
+ Correct
+ Capture
+ Rotate
+ UI language
+ Follow system
+ Chinese (Simplified)
+ English
+ You need to restart the app for language changes to fully take effect.
+ Area eraser
+ Stroke eraser
+ Lasso
+ Geometry
+ Clear & cursor
+ Board
+ Hide
+ Geometry drawing
+ Line
+ Dashed line
+ Dotted line
+ Arrow
+ 4 parallel lines
+ Centered square
+ Centered circle
+ Centered dashed circle
+ Centered ellipse
+ Cuboid
+ Square
+ Cylinder
+ Cone
+ Gesture
+ Gesture options
+ Multi-touch writing
+ Two-finger move
+ Two-finger zoom
+ Two-finger rotate
+ Gesture
+ Gesture options
+