EffectsWindows.xaml.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  1. using PicView.Editing.HlslEffects;
  2. using System;
  3. using System.Windows;
  4. using System.Windows.Input;
  5. using static PicView.Library.Fields;
  6. using static PicView.UI.Animations.MouseOverAnimations;
  7. namespace PicView.UI.Windows
  8. {
  9. public partial class EffectsWindow : Window
  10. {
  11. public EffectsWindow()
  12. {
  13. InitializeComponent();
  14. ContentRendered += Window_ContentRendered;
  15. }
  16. private void Window_ContentRendered(object sender, EventArgs e)
  17. {
  18. KeyDown += KeysDown;
  19. KeyUp += KeysUp;
  20. Scroller.MouseWheel += Info_MouseWheel;
  21. // CloseButton
  22. CloseButton.TheButton.Click += delegate { Hide(); mainWindow.Focus(); };
  23. // MinButton
  24. MinButton.TheButton.Click += delegate { SystemCommands.MinimizeWindow(this); };
  25. TitleBar.MouseLeftButtonDown += delegate { DragMove(); };
  26. NegativeButton.Click += Negative;
  27. NegativeButton.Unchecked += Remove_Effects;
  28. NegativeButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(NegativeBrush);
  29. NegativeButton.MouseEnter += (s, x) => ButtonMouseOverAnim(NegativeBrush, true);
  30. NegativeButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(NegativeBrush, false);
  31. GrayscaleButton.Click += GraySceale;
  32. GrayscaleButton.Unchecked += Remove_Effects;
  33. GrayscaleButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(GrayscaleBrush);
  34. GrayscaleButton.MouseEnter += (s, x) => ButtonMouseOverAnim(GrayscaleBrush, true);
  35. GrayscaleButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(GrayscaleBrush, false);
  36. ColorToneButton.Click += ColorToneEffect;
  37. ColorToneButton.Unchecked += Remove_Effects;
  38. ColorToneButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(ColortoneBrush);
  39. ColorToneButton.MouseEnter += (s, x) => ButtonMouseOverAnim(ColortoneBrush, true);
  40. ColorToneButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(ColortoneBrush, false);
  41. OldMovieButton.Click += OldMovieEffect;
  42. OldMovieButton.Unchecked += Remove_Effects;
  43. OldMovieButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(OldMovieBrush);
  44. OldMovieButton.MouseEnter += (s, x) => ButtonMouseOverAnim(OldMovieBrush, true);
  45. OldMovieButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(OldMovieBrush, false);
  46. BloomButton.Click += Bloom;
  47. BloomButton.Unchecked += Remove_Effects;
  48. BloomButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(BloomBrush);
  49. BloomButton.MouseEnter += (s, x) => ButtonMouseOverAnim(BloomBrush, true);
  50. BloomButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(BloomBrush, false);
  51. GloomButton.Click += Gloom;
  52. GloomButton.Unchecked += Remove_Effects;
  53. GloomButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(GloomBrush);
  54. GloomButton.MouseEnter += (s, x) => ButtonMouseOverAnim(GloomBrush, true);
  55. GloomButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(GloomBrush, false);
  56. MonochromeButton.Click += Monochrome;
  57. MonochromeButton.Unchecked += Remove_Effects;
  58. MonochromeButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(MonocromeBrush);
  59. MonochromeButton.MouseEnter += (s, x) => ButtonMouseOverAnim(MonocromeBrush, true);
  60. MonochromeButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(MonocromeBrush, false);
  61. WavewarperButton.Click += WaveWarperEffect;
  62. WavewarperButton.Unchecked += Remove_Effects;
  63. WavewarperButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(WavewarperBrush);
  64. WavewarperButton.MouseEnter += (s, x) => ButtonMouseOverAnim(WavewarperBrush, true);
  65. WavewarperButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(WavewarperBrush, false);
  66. UnderwaterButton.Click += UnderWaterEffect;
  67. UnderwaterButton.Unchecked += Remove_Effects;
  68. UnderwaterButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(UnderwaterBrush);
  69. UnderwaterButton.MouseEnter += (s, x) => ButtonMouseOverAnim(UnderwaterBrush, true);
  70. UnderwaterButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(UnderwaterBrush, false);
  71. BandedSwirlButton.Click += BandedSwirlEffect;
  72. BandedSwirlButton.Unchecked += Remove_Effects;
  73. BandedSwirlButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(BandedSwirlBrush);
  74. BandedSwirlButton.MouseEnter += (s, x) => ButtonMouseOverAnim(BandedSwirlBrush, true);
  75. BandedSwirlButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(BandedSwirlBrush, false);
  76. RippleButton.Click += RippleEffect1;
  77. RippleButton.Unchecked += Remove_Effects;
  78. RippleButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(RippleBrush);
  79. RippleButton.MouseEnter += (s, x) => ButtonMouseOverAnim(RippleBrush, true);
  80. RippleButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(RippleBrush, false);
  81. RippleAltButton.Click += RippleEffect2;
  82. RippleAltButton.Unchecked += Remove_Effects;
  83. RippleAltButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(RippleAltBrush);
  84. RippleAltButton.MouseEnter += (s, x) => ButtonMouseOverAnim(RippleAltBrush, true);
  85. RippleAltButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(RippleAltBrush, false);
  86. BlurButton.Click += Poison_blur;
  87. BlurButton.Unchecked += Remove_Effects;
  88. BlurButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(BlurBrush);
  89. BlurButton.MouseEnter += (s, x) => ButtonMouseOverAnim(BlurBrush, true);
  90. BlurButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(BlurBrush, false);
  91. DirectionalBlurButton.Click += Dir_blur;
  92. DirectionalBlurButton.Unchecked += Remove_Effects;
  93. DirectionalBlurButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(DirectionalBlurBrush);
  94. DirectionalBlurButton.MouseEnter += (s, x) => ButtonMouseOverAnim(DirectionalBlurBrush, true);
  95. DirectionalBlurButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(DirectionalBlurBrush, false);
  96. TelescopicBlurButton.Click += Teleskopisk_blur;
  97. TelescopicBlurButton.Unchecked += Remove_Effects;
  98. TelescopicBlurButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(TelescopicBlurBrush);
  99. TelescopicBlurButton.MouseEnter += (s, x) => ButtonMouseOverAnim(TelescopicBlurBrush, true);
  100. TelescopicBlurButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(TelescopicBlurBrush, false);
  101. PixelateButton.Click += PixelateEffect;
  102. PixelateButton.Unchecked += Remove_Effects;
  103. PixelateButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(PixelateBrush);
  104. PixelateButton.MouseEnter += (s, x) => ButtonMouseOverAnim(PixelateBrush, true);
  105. PixelateButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(PixelateBrush, false);
  106. EmbossedButton.Click += Embossed;
  107. EmbossedButton.Unchecked += Remove_Effects;
  108. EmbossedButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(EmbossedBrush);
  109. EmbossedButton.MouseEnter += (s, x) => ButtonMouseOverAnim(EmbossedBrush, true);
  110. EmbossedButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(EmbossedBrush, false);
  111. SmoothMagnifyButton.Click += MagnifySmoothEffect;
  112. SmoothMagnifyButton.Unchecked += Remove_Effects;
  113. SmoothMagnifyButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(SmoothMagnifyBrush);
  114. SmoothMagnifyButton.MouseEnter += (s, x) => ButtonMouseOverAnim(SmoothMagnifyBrush, true);
  115. SmoothMagnifyButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(SmoothMagnifyBrush, false);
  116. PivotButton.Click += PivotEffect;
  117. PivotButton.Unchecked += Remove_Effects;
  118. PivotButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(PivotBrush);
  119. PivotButton.MouseEnter += (s, x) => ButtonMouseOverAnim(PivotBrush, true);
  120. PivotButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(PivotBrush, false);
  121. PaperfoldButton.Click += PaperFoldEffect;
  122. PaperfoldButton.Unchecked += Remove_Effects;
  123. PaperfoldButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(PaperfoldBrush);
  124. PaperfoldButton.MouseEnter += (s, x) => ButtonMouseOverAnim(PaperfoldBrush, true);
  125. PaperfoldButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(PaperfoldBrush, false);
  126. PencilSketchButton.Click += SketchPencilStrokeEffect;
  127. PencilSketchButton.Unchecked += Remove_Effects;
  128. PencilSketchButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(PencilSketchBrush);
  129. PencilSketchButton.MouseEnter += (s, x) => ButtonMouseOverAnim(PencilSketchBrush, true);
  130. PencilSketchButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(PencilSketchBrush, false);
  131. SketchButton.Click += Sketch;
  132. SketchButton.Unchecked += Remove_Effects;
  133. SketchButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(SketchBrush);
  134. SketchButton.MouseEnter += (s, x) => ButtonMouseOverAnim(SketchBrush, true);
  135. SketchButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(SketchBrush, false);
  136. TonemappingButton.Click += ToneMapping;
  137. TonemappingButton.Unchecked += Remove_Effects;
  138. TonemappingButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(TonemappingBrush);
  139. TonemappingButton.MouseEnter += (s, x) => ButtonMouseOverAnim(TonemappingBrush, true);
  140. TonemappingButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(TonemappingBrush, false);
  141. BandsButton.Click += bands;
  142. BandsButton.Unchecked += Remove_Effects;
  143. BandsButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(BandsBrush);
  144. BandsButton.MouseEnter += (s, x) => ButtonMouseOverAnim(BandsBrush, true);
  145. BandsButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(BandsBrush, false);
  146. GlasTileButton.Click += GlasTileEffect;
  147. GlasTileButton.Unchecked += Remove_Effects;
  148. GlasTileButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(GlasTileBrush);
  149. GlasTileButton.MouseEnter += (s, x) => ButtonMouseOverAnim(GlasTileBrush, true);
  150. GlasTileButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(GlasTileBrush, false);
  151. FrostyOutlineButton.Click += FrostyOutlineEffect;
  152. FrostyOutlineButton.Unchecked += Remove_Effects;
  153. FrostyOutlineButton.PreviewMouseLeftButtonDown += (s, x) => PreviewMouseButtonDownAnim(FrostyOutlineBrush);
  154. FrostyOutlineButton.MouseEnter += (s, x) => ButtonMouseOverAnim(FrostyOutlineBrush, true);
  155. FrostyOutlineButton.MouseLeave += (s, x) => ButtonMouseLeaveAnimBgColor(FrostyOutlineBrush, false);
  156. }
  157. #region Keyboard Shortcuts
  158. private void KeysDown(object sender, KeyEventArgs e)
  159. {
  160. switch (e.Key)
  161. {
  162. case Key.Down:
  163. case Key.PageDown:
  164. case Key.S:
  165. Scroller.ScrollToVerticalOffset(Scroller.VerticalOffset + zoomSpeed);
  166. break;
  167. case Key.Up:
  168. case Key.PageUp:
  169. case Key.W:
  170. Scroller.ScrollToVerticalOffset(Scroller.VerticalOffset - zoomSpeed);
  171. break;
  172. case Key.Q:
  173. if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
  174. {
  175. Environment.Exit(0);
  176. }
  177. break;
  178. }
  179. }
  180. private void KeysUp(object sender, KeyEventArgs e)
  181. {
  182. switch (e.Key)
  183. {
  184. case Key.Escape:
  185. Hide();
  186. mainWindow.Focus();
  187. break;
  188. case Key.Q:
  189. if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
  190. {
  191. Environment.Exit(0);
  192. }
  193. break;
  194. }
  195. }
  196. private void Info_MouseWheel(object sender, MouseWheelEventArgs e)
  197. {
  198. if (e.Delta > 0)
  199. {
  200. Scroller.ScrollToVerticalOffset(Scroller.VerticalOffset - zoomSpeed);
  201. }
  202. else if (e.Delta < 0)
  203. {
  204. Scroller.ScrollToVerticalOffset(Scroller.VerticalOffset + zoomSpeed);
  205. }
  206. }
  207. #endregion Keyboard Shortcuts
  208. #region HLSL Shader Effects
  209. private void Remove_Effects(object sender, RoutedEventArgs e)
  210. {
  211. mainWindow.img.Effect = null;
  212. }
  213. private void Negative(object sender, RoutedEventArgs e)
  214. {
  215. if (mainWindow.img.Effect == null)
  216. {
  217. mainWindow.img.Effect = new InvertColorEffect();
  218. }
  219. else NegativeButton.IsChecked = false;
  220. }
  221. private void GraySceale(object sender, RoutedEventArgs e)
  222. {
  223. if (mainWindow.img.Effect == null)
  224. {
  225. mainWindow.img.Effect = new GrayscaleEffect();
  226. }
  227. else GrayscaleButton.IsChecked = false;
  228. }
  229. private void ColorToneEffect(object sender, RoutedEventArgs e)
  230. {
  231. if (mainWindow.img.Effect == null)
  232. {
  233. mainWindow.img.Effect = new ColorToneEffect();
  234. }
  235. else ColorToneButton.IsChecked = false;
  236. }
  237. private void RippleEffect1(object sender, RoutedEventArgs e)
  238. {
  239. if (mainWindow.img.Effect == null)
  240. {
  241. mainWindow.img.Effect = new Transition_RippleEffect();
  242. }
  243. else RippleButton.IsChecked = false;
  244. }
  245. private void RippleEffect2(object sender, RoutedEventArgs e)
  246. {
  247. if (mainWindow.img.Effect == null)
  248. {
  249. mainWindow.img.Effect = new RippleEffect();
  250. }
  251. else RippleAltButton.IsChecked = false;
  252. }
  253. private void BandedSwirlEffect(object sender, RoutedEventArgs e)
  254. {
  255. if (mainWindow.img.Effect == null)
  256. {
  257. mainWindow.img.Effect = new BandedSwirlEffect();
  258. }
  259. else BandedSwirlButton.IsChecked = false;
  260. }
  261. private void Monochrome(object sender, RoutedEventArgs e)
  262. {
  263. if (mainWindow.img.Effect == null)
  264. {
  265. mainWindow.img.Effect = new MonochromeEffect();
  266. }
  267. else MonochromeButton.IsChecked = false;
  268. }
  269. private void Swirl(object sender, RoutedEventArgs e)
  270. {
  271. if (mainWindow.img.Effect == null)
  272. {
  273. mainWindow.img.Effect = new SwirlEffect();
  274. }
  275. else BandedSwirlButton.IsChecked = false;
  276. }
  277. private void Bloom(object sender, RoutedEventArgs e)
  278. {
  279. if (mainWindow.img.Effect == null)
  280. {
  281. mainWindow.img.Effect = new BloomEffect();
  282. }
  283. else BloomButton.IsChecked = false;
  284. }
  285. private void Gloom(object sender, RoutedEventArgs e)
  286. {
  287. if (mainWindow.img.Effect == null)
  288. {
  289. mainWindow.img.Effect = new GloomEffect();
  290. }
  291. else GloomButton.IsChecked = false;
  292. }
  293. private void ToneMapping(object sender, RoutedEventArgs e)
  294. {
  295. if (mainWindow.img.Effect == null)
  296. {
  297. mainWindow.img.Effect = new ToneMappingEffect();
  298. }
  299. else TonemappingButton.IsChecked = false;
  300. }
  301. private void Teleskopisk_blur(object sender, RoutedEventArgs e)
  302. {
  303. if (mainWindow.img.Effect == null)
  304. {
  305. mainWindow.img.Effect = new TelescopicBlurPS3Effect();
  306. }
  307. else TelescopicBlurButton.IsChecked = false;
  308. }
  309. private void Poison_blur(object sender, RoutedEventArgs e)
  310. {
  311. if (mainWindow.img.Effect == null)
  312. {
  313. mainWindow.img.Effect = new GrowablePoissonDiskEffect();
  314. }
  315. else BlurButton.IsChecked = false;
  316. }
  317. private void Dir_blur(object sender, RoutedEventArgs e)
  318. {
  319. if (mainWindow.img.Effect == null)
  320. {
  321. mainWindow.img.Effect = new DirectionalBlurEffect();
  322. }
  323. else DirectionalBlurButton.IsChecked = false;
  324. }
  325. private void bands(object sender, RoutedEventArgs e)
  326. {
  327. if (mainWindow.img.Effect == null)
  328. {
  329. mainWindow.img.Effect = new BandsEffect();
  330. }
  331. else BandsButton.IsChecked = false;
  332. }
  333. private void Embossed(object sender, RoutedEventArgs e)
  334. {
  335. if (mainWindow.img.Effect == null)
  336. {
  337. mainWindow.img.Effect = new EmbossedEffect();
  338. }
  339. else EmbossedButton.IsChecked = false;
  340. }
  341. private void GlasTileEffect(object sender, RoutedEventArgs e)
  342. {
  343. if (mainWindow.img.Effect == null)
  344. {
  345. mainWindow.img.Effect = new GlassTilesEffect();
  346. }
  347. else GlasTileButton.IsChecked = false;
  348. }
  349. private void MagnifySmoothEffect(object sender, RoutedEventArgs e)
  350. {
  351. if (mainWindow.img.Effect == null)
  352. {
  353. mainWindow.img.Effect = new MagnifySmoothEffect();
  354. }
  355. else SmoothMagnifyButton.IsChecked = false;
  356. }
  357. private void PaperFoldEffect(object sender, RoutedEventArgs e)
  358. {
  359. if (mainWindow.img.Effect == null)
  360. {
  361. mainWindow.img.Effect = new PaperFoldEffect();
  362. }
  363. else PaperfoldButton.IsChecked = false;
  364. }
  365. private void PivotEffect(object sender, RoutedEventArgs e)
  366. {
  367. if (mainWindow.img.Effect == null)
  368. {
  369. mainWindow.img.Effect = new PivotEffect();
  370. }
  371. else PivotButton.IsChecked = false;
  372. }
  373. private void UnderWaterEffect(object sender, RoutedEventArgs e)
  374. {
  375. if (mainWindow.img.Effect == null)
  376. {
  377. mainWindow.img.Effect = new UnderwaterEffect();
  378. }
  379. else UnderwaterButton.IsChecked = false;
  380. }
  381. private void WaveWarperEffect(object sender, RoutedEventArgs e)
  382. {
  383. if (mainWindow.img.Effect == null)
  384. {
  385. mainWindow.img.Effect = new WaveWarperEffect();
  386. }
  387. else WavewarperButton.IsChecked = false;
  388. }
  389. private void FrostyOutlineEffect(object sender, RoutedEventArgs e)
  390. {
  391. if (mainWindow.img.Effect == null)
  392. {
  393. mainWindow.img.Effect = new FrostyOutlineEffect();
  394. }
  395. else FrostyOutlineButton.IsChecked = false;
  396. }
  397. private void OldMovieEffect(object sender, RoutedEventArgs e)
  398. {
  399. if (mainWindow.img.Effect == null)
  400. {
  401. mainWindow.img.Effect = new OldMovieEffect();
  402. }
  403. else OldMovieButton.IsChecked = false;
  404. }
  405. private void PixelateEffect(object sender, RoutedEventArgs e)
  406. {
  407. if (mainWindow.img.Effect == null)
  408. {
  409. mainWindow.img.Effect = new PixelateEffect();
  410. }
  411. else PixelateButton.IsChecked = false;
  412. }
  413. private void Sketch(object sender, RoutedEventArgs e)
  414. {
  415. if (mainWindow.img.Effect == null)
  416. {
  417. mainWindow.img.Effect = new SketchGraniteEffect();
  418. }
  419. else SketchButton.IsChecked = false;
  420. }
  421. private void SketchPencilStrokeEffect(object sender, RoutedEventArgs e)
  422. {
  423. if (mainWindow.img.Effect == null)
  424. {
  425. mainWindow.img.Effect = new SketchPencilStrokeEffect();
  426. }
  427. else PencilSketchButton.IsChecked = false;
  428. }
  429. #endregion HLSL Shader Effects
  430. }
  431. }