פורסם 2010 בנובמבר 215 שנים שלום,אני כרגע בונה פרויקט 5 יחידות בC# ואני צריך לסובב בו תמונה על פי זווית כלשהיא, ביחס למרכז.חיפשתי די הרבה אבל אינני מצליח למצוא פעולה פשוטה שעושה את זה כמו שצריך.אנא הפנו אותי לפעולה כזאת או אם אפשר הציעו לי רעיון כיצד אני יכול לעשות זאת ,ניסיתי בעצמי אבל משום מה זה לא יוצא טוב.תודה רבה.
פורסם 2010 בנובמבר 215 שנים מה ניסית לעשות בדיוק? יש די הרבה דוגמאות בגוגל:http://www.google.co.il/search?q=rotate+image+c%23
פורסם 2010 בנובמבר 215 שנים מחבר בעיקרון גם אני חיפשתי בגוגל ונחשפתי לדוגמא לדבר הבא :http://www.codeproject.com/KB/graphics/rotateimage.aspxאבל אני לא יכול להשתמש בו מאחר ויש שימוש בדברים שאני לא יודע לדוגמא עבודה עם קבצים אסמבליים.אני צריך משהו בסגנון http://www.codeproject.com/KB/graphics/RotatePictureBox.aspxמאחר והוא יותר פשוט.ניסיתי אותו אבל התמונה פשוט נחתכת, מזה אני מסיק שכנראה הבעיה היא ביצירה של התמונה החדשה , צריך לחשב את הגבולות החדשים בהתאם לזווית של הסיבובניסיתי לעשות זאת אבל זה גם לא עבד...
פורסם 2010 בנובמבר 215 שנים ניסית את התוצאה הראשונה בגוגל?http://www.switchonthecode.com/tutorials/csharp-tutorial-image-editing-rotateהיא משתמשת במנגנונים מובנים של דוטנט. אז אלא אם אתה צריך לממש את הסיבוב בעצמך, אני לא רואה סיבה לא להשתמש בדוגמה הנ"ל.התמונה נחתכת כמובן כי מה לעשות שהגובה והרוחב של התמונה אחרי הסיבוב יותר גדולים מהגובה והרוחב המקוריים. בהערות של המאמר הנ"ל אפילו מתייחסים לזה.
פורסם 2010 בנובמבר 215 שנים מחבר היא אכן מסובבת אבל גם חותכת את התמונה...אולי אתה יודע איך אני יכול לחשב את הגבולות החדשים כך שאני אצור תמונה שלאחר הסיבוב לא תחתך ?
פורסם 2010 בנובמבר 315 שנים בעיבוד תמונה מחלקים את הפעולות לפי עבודה על המקור או על התוצאה. סיבוב עובד על התוצאה היות ואם תנסה לעבוד על המקור תקבל חורים בתמונה.קח פיקסל בתמונת התוצאה ונסה לחשב מה המקור שלו (כמו שכתבו לפניי סינוסים וקוסינוסים..). בצע אינטרפולציה על הפיקסלים השכנים לקורדינטות השבריות שקיבלת ויש לך את הערך בפיקסל התוצאה.זה הרבה יותר פשוט ממה שנדמה לך...
פורסם 2010 בנובמבר 315 שנים מחבר ניסיתי לקחת מלבן כלשהוא ולחסום את התמונה שאני רוצה לסובב,ניסיתי לחשב גבולות חדשים של תמונה כך :double x, y; x = y = 0; x = Math.Cos(angle * Math.PI / 180) * image.Width + Math.Sin(angle * Math.PI / 180) * image.Height; y = Math.Sin(angle * Math.PI / 180) * image.Width + Math.Cos(angle * Math.PI / 180) * image.Height;אך עדיין ישנה בעיה.
פורסם 2010 בנובמבר 415 שנים זה הולך ככה:נניח תמונה עם גובה h ורוחב w.נניח זוית סיבוב קטנה או שווה 45 מעלות (אחרת ניתן לנוון למקרה הזה)מרכז התמונה הוא ציר הסיבוב לכן הקורדינטה של המרכז תהיה (0,0)גודל המלבן החוסם התמונה המסובבת נקבע על פי הפינות.יש לתמונה 4 פינות - אני אתיחס כעת לפינה הימנית העליונה. הקורדינטה שלה היא (w/2,h/2)נחבר הקורדינטה למרכז ומקבלים ישר באורך c = (w^2+h^2)/4 עם זוית ביטא לציר x (אפשר וצריך לחשב אותה).אם נסובב את הישר סביב המרכז בזווית אלפא נקבל מהישר המקורי + המסובב + המרכז משולש שווה שוקיים עם זווית ראש אלפא.כעת אתה יכול לחשב לו את הקורדינטות. קורדינטת ה X החדשה היא חצי הרוחב החדש. ההפרש בקורינטדת ה Y החדשה היא ההפרש שצריך להוסיף לגובה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.