Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ КПК ΠΈ смартфонов Π½Π° .NET Compact FrameworkΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 32

Автор АлСксандр Климов

private void butGetEmail_Click(object sender, EventArgs e) {

 //ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ email Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° устройства

 lblOwnerEmail.Text = SystemState.OwnerEmail;

}

Π”Π°, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ Π² этом случаС нСльзя ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° эти Π΄Π°Π½Π½Ρ‹Π΅ измСнятся. ΠŸΡ€ΠΈΠ΄Π΅Ρ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Π½Π΅ измСнился Π»ΠΈ адрСс Ρƒ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° устройства.

Но стоит Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ увСдомлСния ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ элСктронного адрСса Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° устройства. ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² систСмС занимаСтся класс SystemState. Π”Π°Π½Π½Ρ‹ΠΉ класс содСрТит мноТСство статичных свойств для получСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… настроСк систСмы. Но ΠΊΡ€ΠΎΠΌΠ΅ этого класс SystemState содСрТит ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎΠ΅ событиС Changed. Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ события Π½ΡƒΠΆΠ½ΠΎ сначала ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса SystemState ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ свойство:

sysState = new SystemState(SystemProperty.OwnerEmail, true);

Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π΅Π»Π΅Π³Π°Ρ‚ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ экзСмпляру события Changed:

sysState.Changed += new ChangeEventHandler(sysState_Changed);

А ΡƒΠΆΠ΅ послС этого ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ состояния Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

private void sysState_Changed(object sender, ChangeEventArgs args) {

 lblOwnerEmail.Text = SystemState.OwnerEmail;

}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с элСктронным адрСсом Π±Ρ‹Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ лишь для ознакомлСния. На самом Π΄Π΅Π»Π΅, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… свойств ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΊ ста систСмным настройкам. НаиболСС Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ State ΠΈ Notifications Broker ΠΏΠΎΡ€ΠΎΠΉ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ воспроизвСсти ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… срСдств. НапримСр, Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ экрана ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ API GetSystemMetrics ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° Screen.PrimaryScreen.Bounds. А ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ зарядС Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetSystemPowerStatusEx.

Но Π·Π°Ρ‡Π΅ΠΌ понадобилось ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ? ΠŸΡ€ΠΈΡ‡ΠΈΠ½ для Ρ‚Π°ΠΊΠΎΠ³ΠΎ шага Π±Ρ‹Π»ΠΎ нСсколько. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π½ΠΎΠ²Ρ‹Π΅ возмоТности ΡƒΠ΄ΠΎΠ±Π½Ρ‹ ΠΈ просты. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ для получСния элСктронного адрСса Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° устройства достаточно Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ свойство. Для получСния Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ свойства. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ названия этих свойств говорят сами Π·Π° сСбя ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ наличия ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ справочной Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹.

Для закрСплСния ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΅Ρ‰Π΅ нСсколькими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ получСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… свойств. МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ уровня заряда Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ, Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ, наличия Ρ€Π°Π΄ΠΈΠΎΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° ΠΈ Ρ„ΠΎΡ‚ΠΎΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, названия сотового ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ экрана. ВсС это Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² листингС 10.15.

Листинг 10.15

private void butGetInfo_Click(object sender, EventArgs e) {

 lstInfo.Items.Add("НазваниС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°: " + SystemState.PhoneOperatorName);

 lstInfo.Items.Add("НаличиС Ρ€Π°Π΄ΠΈΠΎ: " + SystemState.PhoneRadioPresent);

 lstInfo.Items.Add("НаличиС ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹: " + SystemState.CameraPresent);

 lstInfo.Items.Add("ΠžΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ экрана " + SystemState.DisplayRotation);

}


private void butBattery_Click(object sender, EventArgs e) {

 // Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ заряда Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ

 BatteryLevel batteryLevel = SystemState.PowerBatteryStrength;

 BatteryState batteryState = SystemState.PowerBatteryState;

 string strBatteryLevel = "Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ заряда";

 switch (batteryLevel) {

 case BatteryLevel.VeryLow:

  strBatteryLevel = "Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ заряда: ΠžΡ‡Π΅Π½ΡŒ Π½ΠΈΠ·ΠΊΠΈΠΉ (0-20%)";

  break;

 case BatteryLevel.Low:

  strBatteryLevel = "Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ заряда: Низкий (21-40%)";

  break;

 case BatteryLevel.Medium:

  strBatteryLevel = "Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ заряда: Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ (41-60%)";

  break:

 case BatteryLevel.High:

  strBatteryLevel = "Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ заряда: Высокий (61-80%)";

  break;

 case BatteryLevel.VeryHigh:

  strBatteryLevel = "Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ заряда: ΠžΡ‡Π΅Π½ΡŒ высокий (81-100%)";

  break;

 }


 // БостояниС Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ

 string strBatteryState = "БостояниС Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ: ";

 if ((batteryState & BatteryState.Normal) == BatteryState.Normal)

  strBatteryState += "ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅";

 if ((batteryState & BatteryState.NotPresent) == BatteryState.NotPresent)

  strBatteryState += "БатарСя отсутствуСт ";

 if ((batteryState & BatteryState.Charging) == BatteryState.Charging)

  strBatteryState += "ЗаряТаСтся ";

 if ((batteryState & BatteryState.Low) == BatteryState.Low)

  strBatteryState += "Низкий заряд ";

 if ((batteryState & BatteryState.Critical) == BatteryState.Critical)

  strBatteryState += "ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅";

 MessageBox.Show(strBatteryLevel + "\n" + strBatteryState);

}

ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°

БистСма Windows Mobile 5.0 обСспСчиваСт Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ вСрсии ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ„ΠΎΡ‚ΠΎΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ, встраивая Π² свои ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ взаимодСйствиС с ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ ΠΈ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠΎΠ². ВСхнология Microsoft DirectShow Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹ΠΌΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Microsoft Windows Media Player 10 Mobile позволяСт ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π΅Π΅Ρ€Π° Π² собствСнныС прилоТСния. ВСхнология Microsoft DirectDraw прСдоставляСт доступ ΠΊ графичСской систСмС Π½Π° Π±ΠΎΠ»Π΅Π΅ высоком ΡƒΡ€ΠΎΠ²Π½Π΅, Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Microsoft Direct3D позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ слоТныС динамичСскиС ΠΈΠ³Ρ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ управляСмый ΠΊΠΎΠ΄. Π­Ρ‚ΠΈ возмоТности стоит Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Π’Ρ‹Π±ΠΎΡ€ изобраТСния

Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Windows Mobile 5.0 стало ΠΏΠΎΡ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΈ рисунков. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ стандартного Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π²Ρ‹Π±ΠΎΡ€Π° рисунка ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ рисунок. Доступ ΠΊ стандартному ΠΎΠΊΠ½Ρƒ Π²Ρ‹Π±ΠΎΡ€Π° рисунка осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ класса Microsoft.WindowsMobile.Forms.SelectPictureDialog.

Но Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. На Ρ„ΠΎΡ€ΠΌΠ΅ Π½Π°Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΡƒ lblSelectedPicture ΠΈ графичСскоС ΠΏΠΎΠ»Π΅ picSelectImage. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ создания прилоТСния ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ссылку Π½Π° пространство ΠΈΠΌΠ΅Π½ Microsoft.WindowsMobile.Forms. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 10.16.

Листинг 10.16

private void butSelectPicture_Click(object sender, EventArgs e) {

 SelectPictureDialog selectPictureDialog = new SelectPictureDialog();

 // Π—Π°Π΄Π°Π΅ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€

 selectPictureDialog.Filter = "Рисунки(*.BMP;*.JPG)|*.BMP;*.JPG";

 // Π—Π°Π΄Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡƒ для ΠΎΠ±Π·ΠΎΡ€Π°

 selectPictureDialog.InitialDirectory = Windows";

 // Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ для Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°

 selectPictureDialog.Title = "Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ рисунок";

 if (selectPictureDialog.ShowDialog() = DialogResult.OK &&

  selectPictureDialog.FileName.Length > 0) {

  // ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

  string fileExtension = Path.GetExtension(selectPictureDialog.FileName);

  // Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΏΡƒΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

  lblSelectedPicture.Text = "Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»: " +

   selectPictureDialog.FileName;

  // Если Π²Ρ‹Π±Ρ€Π°Π½ Ρ„Π°ΠΉΠ» JPG, Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° экран

  if (fileExtension.ToLower() == ".jpg")

   picSelectedImage.Image = new Bitmap(selectPictureDialog.FileName);

 }

}

Π’ Π½Π°Ρ‡Π°Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ SelectPictureDialog, Π° Π·Π°Ρ‚Π΅ΠΌ для Π½Π΅Π³ΠΎ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π½ΡƒΠΆΠ½Ρ‹Π΅ свойства. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойства Filter ограничиваСтся Π²Ρ‹Π±ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ изобраТСния с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ .BMP ΠΈ .JPG. Π—Π°Ρ‚Π΅ΠΌ указываСтся стартовая ΠΏΠ°ΠΏΠΊΠ°. Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, Π² Windows Mobile для хранСния ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°ΠΏΠΊΠ° Мои ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ. Но ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π΅ с изобраТСниями, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ.

Рис. 10.11. Π’Ρ‹Π±ΠΎΡ€ изобраТСния

ΠŸΠΎΡ‚ΠΎΠΌ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° выводится тСкст, ΠΏΠΎΡΡΠ½ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ дальнСйшиС дСйствия. Π­Ρ‚ΠΎ Π±Ρ‹Π» минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΏΡ€ΠΈ использовании класса SelectPictureDialog ΠΊΠΎΠ΄.

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Ρ€Π°Π» ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΈ Π½Π°ΠΆΠ°Π» Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ OK, Ρ‚ΠΎ Π½Π°Π΄ΠΎ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Path.GetExtension ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°. Π’ тСкстовой ΠΌΠ΅Ρ‚ΠΊΠ΅ lblSelectedPicture отобраТаСтся ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ, Π° Π² графичСском ΠΏΠΎΠ»Π΅ picSelectedImage размСщаСтся сама ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°. Но для этого ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .JPG (рис. 10.11).

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° рисунка позволяСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΈΠ· любой ΠΏΠ°ΠΏΠΊΠΈ устройства.

Π Π°Π±ΠΎΡ‚Π° с Ρ„ΠΎΡ‚ΠΎΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ

ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ устройства всС Ρ‡Π°Ρ‰Π΅ ΡΠ½Π°Π±ΠΆΠ°ΡŽΡ‚ΡΡ Ρ„ΠΎΡ‚ΠΎΠΊΠ°ΠΌΠ΅Ρ€Π°ΠΌΠΈ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ отсутствиС ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π½Π° смартфонС ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ большим нСдостатком. БистСма Windows Mobile 5.0 ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ возмоТности Π² своих прилоТСниях.

Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Π° изобраТСния позволяСт ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π² прилоТСния. ΠŸΡ€ΠΈ этом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹. Доступ ΠΊ возмоТностям ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ класса Microsoft.WindowsMobile.Forms.CameraCaptureDialog. Класс CameraCaptureDialog ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° класс SelectPictureDialog.

Бвойство Mode позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ съСмки. ΠšΠ°ΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ‚ΠΎΠ°ΠΏΠΏΠ°Ρ€Π°Ρ‚, Ρ‡Ρ‚ΠΎ задаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ CameraCaptureMode.Still, ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊ. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ShowDialog, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ ΠΎΠΊΠ½ΠΎ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Ρ€Π°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ OK, Ρ‚ΠΎ возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ DialogResult.OK. Имя Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ записываСтся Π² свойство FileName. Π’ листингС 10.17 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„ΠΎΡ‚ΠΎΠΊΠ°ΠΌΠ΅Ρ€ΠΎΠΉ.