Notre application dessine des ombres portées sous les vignettes. Il le fait en créant une image bitmap, en obtenant un objet Graphics
en utilisant Graphics.FromImage
, puis en superposant des images en utilisant Graphics.DrawImage
. Je l'utilise aujourd'hui pour la première fois sur le bureau à distance, et il semble horrible, parce que les ombres sont tramées. Je ne sais pas si cela se produit pendant la superposition, ou dans le client RDP. Y at-il un moyen pour moi de déterminer si l'image finale sera tramée, soit en regardant l'image, l'objet graphique, ou les paramètres de l'écran, afin que je puisse omettre l'ombre?Comment détecter si un graphique sera tramé?
1
A
Répondre
1
Vous pouvez utiliser la variable System.Windows.Forms.SystemInformation.TerminalServerSession pour détecter si vous êtes en mode RDP et le dégrader en conséquence.
Je ne sais pas un moyen de détecter si le client RDP ne tramage ou si est décalé de la profondeur de couleur du deskto pour le match mais vous pouvez détecter ce dernier via la fonction GetDeviceCaps:
using System.Runtime.InteropServices;
public class DeviceCaps
{
private const int PLANES = 14;
private const int BITSPIXEL = 12;
[DllImport("gdi32", CharSet = CharSet.Ansi,
SetLastError = true, ExactSpelling = true)]
private static extern int GetDeviceCaps(int hdc, int nIndex);
[DllImport("user32", CharSet = CharSet.Ansi,
SetLastError = true, ExactSpelling = true)]
private static extern int GetDC(int hWnd);
[DllImport("user32", CharSet = CharSet.Ansi,
SetLastError = true, ExactSpelling = true)]
private static extern int ReleaseDC(int hWnd, int hdc);
public short ColorDepth()
{
int dc = 0;
try
{
dc = GetDC(0);
var nPlanes = GetDeviceCaps(dc, PLANES);
var bitsPerPixel = GetDeviceCaps(dc, BITSPIXEL);
return nPlanes * bitsPerPixel;
}
finally
{
if (dc != 0)
ReleaseDC(0, dc);
}
}
}
rendu sur la base la profondeur de couleur est préférable à la dégradation spéculative en supposant que l'utilisateur le fait à cause de RDP mais peut être suffisant pour vous.
Questions connexes
- 1. Comment détecter si un nombre donné est un nombre entier?
- 2. Comment détecter si un lecteur spécifique est un disque dur?
- 3. Détecter si un noeud Gtk.TreeNode est développé
- 4. iPhone: Comment détecter si iTunes joue?
- 5. Comment détecter si NSDrawer va s'ouvrir
- 6. Comment détecter si un utilisateur exécute IE 6?
- 7. Comment détecter si le type est un autre type générique
- 8. comment détecter si une URL pointe vers un fichier SWF
- 9. Comment détecter si un débogueur OpenGL est utilisé?
- 10. Comment détecter si un moniteur est en mode veille?
- 11. Comment détecter si un moniteur est grand écran sous Windows
- 12. Comment détecter si Vista UAC est activé?
- 13. Détecter si Tooltip est affiché?
- 14. Détecter si IIS est activé
- 15. Comment définir un seuil lors de la conversion de JPEG en bitmap non tramé?
- 16. Détecter en C si sortie vers un terminal
- 17. Détecter si une page est dans un iframe - côté serveur
- 18. Comment détecter un appel Selector.wakeup
- 19. Détecter si l'utilisateur fait partie d'un groupe
- 20. Détecter si Windows s'exécute depuis Parallels?
- 21. .Net - Détecter si l'identificateur désiré est un mot-clé
- 22. détecter si un tableau est indexé ou Associatif
- 23. Détecter si un formulaire a été soumis avec PHP
- 24. Détecter si l'entité est attachée à un datacontext
- 25. Word Automation: détecter si un saut de page est nécessaire?
- 26. détecter si un ASCX/ASPX s'exécute dans SharePoint?
- 27. Comment puis-je détecter si IE8 fonctionne en mode compatibilité?
- 28. Comment puis-je détecter si Dispatcher.DisableProcessing est actif?
- 29. Comment détecter si une procédure stockée existe déjà
- 30. Comment puis-je détecter si Windows Installer est installé?