Editing How to use Windows clipboard in WPF applications: Difference between revisions
Jump to navigation
Jump to search
(Created page with 'Category:English pages Category:Software development <google>ENGELSK</google>') |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[[Category:English pages]] | [[Category:English pages]] | ||
[[Category:Software development]] | [[Category:Software development]] | ||
==WPF application using Clipboard.GetImage== | |||
[[File:ClipboardMainWindow.jpg]] | |||
====MainWindow.xaml==== | |||
<source lang=XML> | |||
<Window x:Class="Clipboard_sample.MainWindow" | |||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||
SizeToContent="WidthAndHeight" | |||
Title="MainWindow"> | |||
<Grid> | |||
<Grid.RowDefinitions> | |||
<RowDefinition Height="Auto" /> | |||
<RowDefinition Height="Auto" /> | |||
</Grid.RowDefinitions> | |||
<Grid> | |||
<Grid.ColumnDefinitions> | |||
<ColumnDefinition/> | |||
<ColumnDefinition Width="200"/> | |||
<ColumnDefinition/> | |||
</Grid.ColumnDefinitions> | |||
<TextBlock Text =" File name:"/> | |||
<TextBox Grid.Column="1" x:Name="_textBox" Text="" /> | |||
<Button Grid.Column="2" Content="Save" x:Name="_button" Click="_button_OnClick"/> | |||
</Grid> | |||
<ListBox x:Name="_listBox" Grid.Row="1" SelectedIndex="0"> | |||
<ListBoxItem>Jpeg</ListBoxItem> | |||
<ListBoxItem>Bmp</ListBoxItem> | |||
<ListBoxItem>Gif</ListBoxItem> | |||
<ListBoxItem>Png</ListBoxItem> | |||
<ListBoxItem>Tiff</ListBoxItem> | |||
<ListBoxItem>Exif</ListBoxItem> | |||
<ListBoxItem>Wmf</ListBoxItem> | |||
</ListBox> | |||
</Grid> | |||
</Window> | |||
</source> | |||
====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 | |||
* [http://code.msdn.microsoft.com/windowsapps/Clipboard-App-sample-309ec122 Clipboard app sample] | |||
<google>ENGELSK</google> | <google>ENGELSK</google> |
Latest revision as of 13:29, 25 April 2014
WPF application using Clipboard.GetImage
MainWindow.xaml
<source lang=XML> <Window x:Class="Clipboard_sample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" SizeToContent="WidthAndHeight" Title="MainWindow"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition Width="200"/> <ColumnDefinition/> </Grid.ColumnDefinitions> <TextBlock Text =" File name:"/> <TextBox Grid.Column="1" x:Name="_textBox" Text="" /> <Button Grid.Column="2" Content="Save" x:Name="_button" Click="_button_OnClick"/> </Grid> <ListBox x:Name="_listBox" Grid.Row="1" SelectedIndex="0"> <ListBoxItem>Jpeg</ListBoxItem> <ListBoxItem>Bmp</ListBoxItem> <ListBoxItem>Gif</ListBoxItem> <ListBoxItem>Png</ListBoxItem> <ListBoxItem>Tiff</ListBoxItem> <ListBoxItem>Exif</ListBoxItem> <ListBoxItem>Wmf</ListBoxItem> </ListBox> </Grid>
</Window> </source>
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>