Voici un extrait que j'utilise pour démarrer le CameraCaptureDialog:
cameraDialog.Owner = this;
cameraDialog.InitialDirectory = @"\My Documents";
cameraDialog.DefaultFileName = "test.jpg";
cameraDialog.Title = "iCOMM Camera Demo";
cameraDialog.StillQuality = CameraCaptureStillQuality.Default;
cameraDialog.Mode = CameraCaptureMode.Still;
Le diff est, que je ne pas utiliser un objet Taille défini gratuit, mais une résolution exisiting const donnée par la classe CameraCaptureDialog . Comme indiqué, il devrait y avoir une liste de résolutions prises en charge dans le registre. Dans un autre code que j'utilise ce qui suit pour obtenir les années res connues:
public cResolution[] getResolutions(){
cResolution[] cRes;
RegistryKey rKey = Registry.LocalMachine.OpenSubKey(regSubResolution, false);
string[] subKeys = rKey.GetSubKeyNames();
cRes = new cResolution[subKeys.Length];
int i=0;
foreach (string s in subKeys)
{
RegistryKey rKeySub = Registry.LocalMachine.OpenSubKey(regSubResolution + "\\" + s, false);
string item;
int w, h, hqfs, nqfs, lqfs, pw, ph;
item = (string)rKeySub.GetValue("ItemString");
w = (int)rKeySub.GetValue("Width");
h = (int)rKeySub.GetValue("Height");
hqfs = (int)rKeySub.GetValue("HighQualityFileSize");
lqfs = (int)rKeySub.GetValue("LowQualityFileSize");
nqfs = (int)rKeySub.GetValue("NormalQualityFileSize");
ph = (int)rKeySub.GetValue("PreviewHeight");
pw = (int)rKeySub.GetValue("PreviewWidth");
cRes[i] = new cResolution(item, h, w, pw, ph, hqfs, nqfs, lqfs);
i++;
rKeySub = null;
}
Mais comme dit, cela dépend de la mise en œuvre OEM de la caméra.
~ josef
Certaines caméras ne prennent pas en charge toutes les résolutions. Vous pouvez éventuellement obtenir une liste des résolutions prises en charge à partir du registre. Si vous choisissez une résolution non prise en charge, le code échouera. – josef
Bonjour josef, Le périphérique prend en charge cette résolution, mais il n'est pas modifié par le code. Merci pour votre réponse –