Fotoalbom portret və mənzərə

Fotoalbom portret və mənzərə


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Fotoalbom portret və landşaft rejimi

Pəncərənin ilk açıldığı anda portret və landşaft rejimləri arasında avtomatik keçid üsulu?

Artıq bunu edən bəzi nümunə kodlarınız ola bilər. Mən oriyentasiyanı idarə etmək üçün bundan istifadə etmişəm, bu da etmək istədiyimə çox bənzəyir.

Mən nə etməyə çalışıram

Əsas ekranımda portretdən mənzərəyə keçən tam ekran divar kağızı kimi görünən bir pəncərəyə sahib olmaq istəyirəm. Yəni: mənzərəyə getdiyim zaman eyni divar kağızı kənarları kəsilmiş landşaft rejimində görünməlidir. Mən portretə gedəndə eyni divar kağızı portretdə kənarları kəsilmiş landşaft rejimində olmalıdır.

Pəncərəmi yuxarıdakı portret nümunələrində istifadə olunan formada qurmuşam, ona görə də defolt olaraq portret rejimindən istifadə edə bilərəm. Pəncərəni portret rejimində açanda istərdim ki, divar kağızı portret rejimində, pəncərəni landşaft rejimində açanda isə divar kağızı landşaft rejimində görünsün.

Budur, mən tapdım, amma kodun bir neçə səhvi və ya yan təsirləri var: düymə görünmür, kliklədikdə heç nə etmir, baxmayaraq ki, pəncərədə başqa uşaq yoxdur və mən onun olmasını gözləyirdim. davranışını valideynlərindən almaq üçün pəncərənin ölçüsü dəyişdirildikdə divar kağızı kəsilir və bütün divar kağızı daxil edilmir (sanki ölçüsü düzgün deyil və pəncərə ölçüsünə kəsilir) və portret rejimində düymə səhvdir yer, başlıq çubuğunu üst-üstə düşür (pəncərənin kənarından başqa heç nə üst-üstə düşməməlidir).

Mən Windows 8-in inkişafı üçün yeniyəm, ona görə də hər hansı rəy yüksək qiymətləndiriləcək! Mənə problemi necə həll etməli olduğum barədə rəy bildirməkdənsə, problemin kodunu daxil edə bilsəniz, üstünlük verərdim.

Pəncərədə başqa uşaqlar yoxdursa, düymə görünməlidir. Təəssüf ki, pəncərə forması hit test nəticəsi təyin etmədiyinə görə, WPF və WinRT (WinRT Win8 üçün istifadə edilən daha yeni Windows Runtime API-yə istinad edir) ona qeyri-aktiv uşaq kimi yanaşır.

Bunu düzəltmək üçün sizə kod verə biləcəyimə əmin deyiləm, çünki hələ sınamaq üçün kodum yoxdur. (Və siz həqiqətən hansı səhvlə qarşılaşdığınızı dəqiqləşdirmədiniz.) Amma icazə verin görək düyməni görünən etmək üçün nəsə tapa bilmirəm.

EDIT: Mən bu sualı başqa saytda tapdım və o adamın yaxşı görünən bir həlli var idi, amma hələ cəhd etməmişəm.

Pəncərənin ölçüsünü dəyişdirdiyiniz zaman oriyentasiya dəyişikliyi problemi ilə üzləşməməlisiniz. Heç bir uşaq olmayan bir pəncərə formanız olsaydı, açılan bir dialoq görəcəksiniz. (Doğrudur, tətbiqin nümunəsi və foto albom üslubu üçün istifadə olunan formalar sizə başlıq çubuğu vermir.) Amma güman edirəm ki, siz pəncərənizi nəyinsə uşağı kimi saxlayırsınız, bu halda siz bunu edə bilməlisiniz. onun ölçüsünü istənilən ölçüdə dəyişdirin və məncə divar kağızı ölçüsünü dəyişməyə cəhd etməməlidir.

Hər halda, divar kağızı sahəsində qeyd etdiyiniz səhvi gördüm. Pəncərənin ölçüsü düzgün olsa da, nəyinsə kəsilməsində səhv kimi görünür. Daha çox öyrənməyə çalışacağam. Ancaq görünür ki, siz RenderTransform-dan istifadə etmək istəyə bilərsiniz.

//İlkin ölçüsünü şəklin ölçüsünə təyin etmək, belə ki, onun özünə sahib olması

//başlanğıcda real ölçü, foto albom nümunəsindəki kimi.

Şəkil şəkli = yeni Şəkil(),

//Kamera tərəfindən çəkilmiş və JPEG faylı kimi saxlanılan real şəkil ölçüsü.

int realSize = 0,

əgər (camera.GetRealImageWidth() >, 0 &,&, camera.GetRealImageHeight() >, 0) {

realSize = camera.GetRealImageWidth() * camera.GetRealImageHeight(),

}

image.Source = ImageSource.FromFile(Path.Combine(savePath, "test.jpg")),

//Şəkil hələ pəncərənin ölçüsünə uyğunlaşdırılmayıb. Bu var

//şəklin ölçüsü, ona görə də biz Pəncərəni tənzimlədiyimiz zaman pəncərənin ölçüsünü

//dəyişməyəcək, eyni ölçüdə qalacaq, lakin şəkil böyüyəcək

//pəncərəyə uyğunlaşdırmaq üçün.

image.Height = Convert.ToInt32(realSize / this.ActualWidth),

image.Width = Convert.ToInt32(realSize / this.ActualHeight),

şəkil.Mənbə = şəkil.Mənbə,

this.Viewport.Children.Əlavə (şəkil),

//QEYD: Windows 8-də başlıq zolağı ideyası yoxdur, ona görə də bu qədərdir

//düymənin (yuxarı sağ küncdə) düzgün yerləşdirildiyinə əmin olmaq üçün

//pəncərənin daxilində (yuxarıdakı koddakı şərhlərə baxın).

image.VerticalAlignment = VerticalAlignment.Center,

image.HorizontalAlignment = HorizontalAlignment.Center,

image.VerticalAlignment = VerticalAlignment.Top,

image.HorizontalAlignment = HorizontalAlignment.Sağ,

image.Width = Convert.ToInt32(realSize / this.ActualWidth),

image.Height = Convert.ToInt32(realSize / this.ActualHeight),

image.BorderBrush = System.Windows.Media.MediaColors.LightGray,

image.BorderThickness = 2,

şəkil.Kənar = yeni Qalınlıq(2, 2, 2, 2),

salam,

Əgər siz sadəcə olaraq kamera ölçüsü ilə eyni ölçülü şəkli saxlamaq istəyirsinizsə, if ifadəsini silə, pəncərənin ölçüsünü dəyişdirə və sonra hündürlüyü real ölçüyə təyin edə bilərsiniz:

Həqiqi ölçüsü hesablamadan əvvəl int32-yə çevirmək lazım deyil, çünki Convert.ToInt32 int64 qaytarır. Bu üsul nəticəni yuvarlaqlaşdıra bildiyi üçün o, həmişə 4-ə qədər yuvarlaqlaşdırılacaq. Yəni, nəticəni 4-ün ən yaxın qatına yuvarlaqlaşdıracaq, bu halda ən yaxın int32 dəyərinə bərabər olacaqdır. Bu, int64-dən istifadə etməklə tam olaraq eyni deyil, lakin kifayət qədər yaxındır. Bunun camera.GetRealImage-in olduğu ssenaridə işləyəcəyini bilmirəm


Videoya baxın: صور خلفيات مناظر طبيعية متحركة


Şərhlər:

  1. Guillaume

    Hmm ... it even happens.

  2. Kigara

    Əla! Davam et! Abunə olun!

  3. Alhrick

    Sadəcə mövzuda, sərin

  4. Ware

    Hə doğrudan da. Buna görə də olur. Bu sualı müzakirə edək. Burada və ya axşam.

  5. Kenris

    Səhv olduğunuzu nəzərdə tuturam. Giriş edəcəyik.

  6. Keifer

    Düzdür, bu çox faydalıdır



Mesaj yazmaq