Editing How to use Windows clipboard in WPF applications: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
[[Category:Software development]] | [[Category:Software development]] | ||
==WPF application using Clipboard.GetImage== | ==WPF application using Clipboard.GetImage== | ||
===MainWindow.xaml.cs=== | |||
<source lang="csharp"> | |||
using System.IO; | |||
using System.Windows; | |||
using System.Windows.Controls; | |||
using Path = System.IO.Path; | |||
namespace Clipboard_sample | |||
{ | |||
/// <summary> | |||
/// Interaction logic for MainWindow.xaml | |||
/// </summary> | |||
public partial class MainWindow | |||
{ | |||
public MainWindow() | |||
{ | |||
InitializeComponent(); | |||
} | |||
private void SaveClipboardUsingClipboardGetImage() | |||
{ | |||
var data = Clipboard.GetDataObject(); | |||
if (data == null) | |||
{ | |||
MessageBox.Show("Clipboard Empty !!"); | |||
return; | |||
} | |||
if (data.GetDataPresent(DataFormats.Bitmap)) | |||
{ | |||
const string directory = @".\"; | |||
var name = _textBox.Text; | |||
name = string.IsNullOrEmpty(name) && name.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0 ? "clipboard" : _textBox.Text; | |||
var format = ((ListBoxItem) (_listBox.SelectedValue)).Content.ToString(); | |||
if (File.Exists(Path.Combine(directory, name + "." + format))) | |||
{ | |||
MessageBox.Show("The target already exists"); | |||
} | |||
var image = Clipboard.GetImage(); | |||
if (image == null) | |||
{ | |||
MessageBox.Show("Cannot get image from clipboard"); | |||
return; | |||
} | |||
switch (format) | |||
{ | |||
case "Jpeg": | |||
{ | |||
image.SaveAsJpeg(Path.Combine(directory, name + "." + format)); | |||
break; | |||
} | |||
case "Bmp": | |||
{ | |||
image.SaveAsBmp(Path.Combine(directory, name + "." + format)); | |||
break; | |||
} | |||
case "Gif": | |||
{ | |||
image.SaveAsGif(Path.Combine(directory, name + "." + format)); | |||
break; | |||
} | |||
case "Png": | |||
{ | |||
image.SaveAsPng(Path.Combine(directory, name + "." + format)); | |||
break; | |||
} | |||
case "Tiff": | |||
{ | |||
image.SaveAsTiff(Path.Combine(directory, name + "." + format)); | |||
break; | |||
} | |||
} | |||
} | |||
else | |||
{ | |||
MessageBox.Show("No imagine in Clipboard !!"); | |||
} | |||
} | |||
private void _button_OnClick(object sender, RoutedEventArgs e) | |||
{ | |||
SaveClipboardUsingClipboardGetImage(); | |||
} | |||
} | |||
} | |||
</source> | |||
===BitmapExtensions.cs=== | |||
<source lang="csharp"> | |||
using System.IO; | |||
using System.Windows.Media.Imaging; | |||
namespace Clipboard_sample | |||
{ | |||
static class BitmapExtensions | |||
{ | |||
public static void SaveAsJpeg(this BitmapSource bitmap, string path, int qualityLevel = 90) | |||
{ | |||
using (var s = File.Create(path)) | |||
{ | |||
var enc = new JpegBitmapEncoder | |||
{ | |||
Frames = { BitmapFrame.Create(bitmap) }, | |||
QualityLevel = qualityLevel, | |||
}; | |||
enc.Save(s); | |||
} | |||
} | |||
public static void SaveAsBmp(this BitmapSource bitmap, string path) | |||
{ | |||
using (var s = File.Create(path)) | |||
{ | |||
var enc = new BmpBitmapEncoder | |||
{ | |||
Frames = { BitmapFrame.Create(bitmap) }, | |||
}; | |||
enc.Save(s); | |||
} | |||
} | |||
public static void SaveAsPng(this BitmapSource bitmap, string path) | |||
{ | |||
using (var s = File.Create(path)) | |||
{ | |||
var enc = new PngBitmapEncoder | |||
{ | |||
Frames = { BitmapFrame.Create(bitmap) }, | |||
}; | |||
enc.Save(s); | |||
} | |||
} | |||
public static void SaveAsGif(this BitmapSource bitmap, string path) | |||
{ | |||
using (var s = File.Create(path)) | |||
{ | |||
var enc = new GifBitmapEncoder | |||
{ | |||
Frames = { BitmapFrame.Create(bitmap) }, | |||
}; | |||
enc.Save(s); | |||
} | |||
} | |||
public static void SaveAsTiff(this BitmapSource bitmap, string path) | |||
{ | |||
using (var s = File.Create(path)) | |||
{ | |||
var enc = new TiffBitmapEncoder | |||
{ | |||
Frames = { BitmapFrame.Create(bitmap) }, | |||
}; | |||
enc.Save(s); | |||
} | |||
} | |||
} | |||
} | |||
</source> | |||
==Windows Store App== | ==Windows Store App== | ||
Clipboard app sample | Clipboard app sample |
Revision as of 13:21, 25 April 2014
WPF application using Clipboard.GetImage
MainWindow.xaml.cs
<source lang="csharp"> using System.IO; using System.Windows; using System.Windows.Controls; using Path = System.IO.Path;
namespace Clipboard_sample {
/// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow { public MainWindow() { InitializeComponent(); }
private void SaveClipboardUsingClipboardGetImage() { var data = Clipboard.GetDataObject(); if (data == null) { MessageBox.Show("Clipboard Empty !!"); return; } if (data.GetDataPresent(DataFormats.Bitmap)) { const string directory = @".\"; var name = _textBox.Text; name = string.IsNullOrEmpty(name) && name.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0 ? "clipboard" : _textBox.Text;
var format = ((ListBoxItem) (_listBox.SelectedValue)).Content.ToString();
if (File.Exists(Path.Combine(directory, name + "." + format))) { MessageBox.Show("The target already exists"); } var image = Clipboard.GetImage(); if (image == null) { MessageBox.Show("Cannot get image from clipboard"); return; }
switch (format) { case "Jpeg": { image.SaveAsJpeg(Path.Combine(directory, name + "." + format)); break; } case "Bmp": { image.SaveAsBmp(Path.Combine(directory, name + "." + format)); break; } case "Gif": { image.SaveAsGif(Path.Combine(directory, name + "." + format)); break; } case "Png": { image.SaveAsPng(Path.Combine(directory, name + "." + format)); break; } case "Tiff": { image.SaveAsTiff(Path.Combine(directory, name + "." + format)); break; } } } else { MessageBox.Show("No imagine in Clipboard !!"); } }
private void _button_OnClick(object sender, RoutedEventArgs e) { SaveClipboardUsingClipboardGetImage(); } }
} </source>
BitmapExtensions.cs
<source lang="csharp"> using System.IO; using System.Windows.Media.Imaging;
namespace Clipboard_sample {
static class BitmapExtensions { public static void SaveAsJpeg(this BitmapSource bitmap, string path, int qualityLevel = 90) { using (var s = File.Create(path)) { var enc = new JpegBitmapEncoder { Frames = { BitmapFrame.Create(bitmap) }, QualityLevel = qualityLevel, }; enc.Save(s); } }
public static void SaveAsBmp(this BitmapSource bitmap, string path) { using (var s = File.Create(path)) { var enc = new BmpBitmapEncoder { Frames = { BitmapFrame.Create(bitmap) }, }; enc.Save(s); } }
public static void SaveAsPng(this BitmapSource bitmap, string path) { using (var s = File.Create(path)) { var enc = new PngBitmapEncoder { Frames = { BitmapFrame.Create(bitmap) }, }; enc.Save(s); } }
public static void SaveAsGif(this BitmapSource bitmap, string path) { using (var s = File.Create(path)) { var enc = new GifBitmapEncoder { Frames = { BitmapFrame.Create(bitmap) }, }; enc.Save(s); } }
public static void SaveAsTiff(this BitmapSource bitmap, string path) { using (var s = File.Create(path)) { var enc = new TiffBitmapEncoder { Frames = { BitmapFrame.Create(bitmap) }, }; enc.Save(s); } } }
} </source>
Windows Store App
Clipboard app sample This sample covers the following:
- How to copy and paste text
- How to copy and paste an image
- How to copy and paste files
- How to get the formats on the Clipboard
- How to detect changes to the Clipboard
- How to copy and paste text
<google>ENGELSK</google>