4.5 KiB
4.5 KiB
name, overview, todos, isProject
| name | overview | todos | isProject | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Knip companion editor | Een C# .NET 8 WPF-app die naast het Windows Knipprogramma draait, nieuwe knipsels oppikt (klembord, Screenshots-map, 'Openen met') en ze opent in een eigen editor met blur/pixelate, tekstkaders, stappen, cursor, highlight en vormen. |
|
false |
Knip Companion - WPF annotatie-editor naast het Knipprogramma
Architectuur
flowchart LR
SnipTool["Knipprogramma (onaangetast)"] -->|kopieert| Clipboard
SnipTool -->|slaat op| ScreenshotsFolder["Afbeeldingen/Schermafbeeldingen"]
SnipTool -->|"Openen met"| CmdArgs["App gestart met bestandspad"]
Clipboard --> Watcher[CaptureWatcher]
ScreenshotsFolder --> Watcher
CmdArgs --> Editor
Watcher -->|toast/tray-melding of direct| Editor[EditorWindow]
Editor -->|Ctrl+C / Opslaan| Output["Klembord / PNG-bestand"]
- De app draait in de achtergrond met een tray-icoon (
NotifyIconviaH.NotifyIcon.Wpf) en is single-instance (Mutex + named pipe om bestandspaden door te geven). - Bij een nieuw knipsel opent de editor direct of na een melding (instelbaar).
Projectstructuur
- KnipPlus.sln
- src/KnipPlus/App.xaml.cs: opstarten, single-instance, tray, verwerking van commandline-argumenten
- src/KnipPlus/Capture/ClipboardWatcher.cs:
AddClipboardFormatListener+WM_CLIPBOARDUPDATE, controleert of het klembord een afbeelding bevat - src/KnipPlus/Capture/FolderWatcher.cs:
FileSystemWatcheropKnownFolder Screenshots, met dedupe tegen het klembord (hash) - src/KnipPlus/Editor/EditorWindow.xaml: werkbalk (stijl zoals het Knipprogramma), canvas, eigenschappenpaneel (kleur, randdikte, stijl)
- src/KnipPlus/Editor/Annotations/: één klasse per tool, met een gemeenschappelijke basis
Annotation(Render, HitTest, Move/Resize-handles) - src/KnipPlus/Editor/UndoStack.cs: undo/redo met commando's
- src/KnipPlus/Settings/: JSON-instellingen in
%AppData%\KnipPlus
Tools (annotaties als bewerkbare objecten, pas plat bij export)
- Rechthoek/ellips: randkleur, vulkleur (optioneel/transparant), dikte, stijl (doorgetrokken/gestreept/gestippeld), afgeronde hoeken, schaduw
- Tekst in kader: tekst met achtergrondkader, padding, lettertype/-grootte, kleur
- Stappen: genummerde badges die automatisch ophogen; reeks kiezen: 1,2,3 / a,b,c / A,B,C / I,II,III
- Cursor: stempel van een pijl- of handcursor (meegeleverde vectoriconen)
- Highlight: semi-transparante markeerstift; met Shift een recht horizontale streep (standaard rechtgetrokken, instelbaar)
- Blur / pixelate: rechthoekig gebied; effect berekend op de onderliggende bitmap (Gaussian blur of pixelblokken, sterkte instelbaar)
- Extra: pijl, lijn, bijsnijden, selecteren/verplaatsen/verwijderen
Export
- Ctrl+C: gerenderde PNG naar het klembord (gemarkeerd zodat de eigen watcher het niet opnieuw oppikt)
- Ctrl+S / Opslaan als: PNG/JPG
- Rendering via
RenderTargetBitmapop de originele resolutie (rekening houden met DPI)
Integratie met "Openen met"
- Registratie per gebruiker in
HKCU\Software\Classes\Applications\KnipPlus.exe+OpenWithProgidsvoor.png/.jpg, zodat de app in het menu "Openen met" van het Knipprogramma staat (geen beheerdersrechten nodig) - Optioneel: automatisch starten met Windows (
HKCU\...\Run)
Fasering
- Skelet: solution, tray-app, single-instance, editor die een afbeelding toont
- Capture: klembord- en mapwatcher, instellingen
- Tools: vormen, tekstkader, stappen, highlight, cursor
- Blur/pixelate, undo/redo, selecteren/aanpassen
- Export, "Openen met"-registratie, autostart, installer (MSIX of Inno Setup)