J'essaie d'intégrer une capture d'écran dans mon application WPF et j'aimerais qu'elle ressemble à un outil d'extraction. Jusqu'à présent, j'ai réussi à accomplir quelque chose de similaire en créant une fenêtre en plein écran (avec un canevas) avec une opacité de 0.5 et un fond sombre. Lorsque je clique quelque part et commence à faire glisser, un rectangle blanc est dessiné, générant un effet similaire à this. Ce que je voudrais avoir, c'est la partie interne de ce rectangle ouvrant un trou d'opacité dans la toile de fond, de sorte que je puisse voir à travers la zone sélectionnée - tout comme l'outil d'extraction. Problème est, étant relativement nouveau à. NET, je n'ai aucune idée comment ou où commencer. Est-ce que certaines recherches et tests sur le champ OpacityMask de la fenêtre de capture d'écran, mais n'ont obtenu nulle part. Il s'agit d'un little vid pour afficher l'effet actuel.C# WPF capture d'écran avec l'effet SnippingTool
Modifier:
En outre, en tant que question bonus, existe-t-il un moyen facile d'obtenir une capture d'écran qui s'étend sur plusieurs moniteurs (écran virtuel)?
Graphics.CopyFromScreen()
ne semble fonctionner que pour 1 écran.
déjà fixé cela et semble fonctionner pour tous les modèles de bureau virtuels possibles étranges:
// Capture screenie (rectangle is the area previously selected
double left = Canvas.GetLeft(this.rectangle);
double top = Canvas.GetTop(this.rectangle);
// Calculate left/top offset regarding to primary screen (where the app runs)
var virtualDisplay = System.Windows.Forms.SystemInformation.VirtualScreen;
var primaryScreen = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
if (virtualDisplay.Left < primaryScreen.Left)
{
left -= Math.Abs(virtualDisplay.Left - primaryScreen.Left);
}
if (virtualDisplay.Top < primaryScreen.Top)
{
top -= Math.Abs(virtualDisplay.Top - primaryScreen.Top);
}
pertinente: http://stackoverflow.com/questions/3123776/net-equivalent-of-snipping-tool/3124252#3124252 –
Je vois que vous avez pris l'approche de saisir une capture d'écran de bureau. Est-ce logique, même si je voulais en quelque sorte l'éviter! En outre, j'ai réalisé que CopyFromScreen peut être alimenté avec des coordonnées négatives (disons si mon autre écran est à gauche de la main) alors maintenant c'est juste une question de maths :) – biasedbit
Si vous regardez de près, l'outil de coupure est également saisissant une capture d'écran du bureau –