אי אפשר היה להכניס הכל לארכיון אחד כי הוא היה גדול מ250 קילו ביט אז פיצלתי את זה לשניים.
תראו את זה בבקשה.
תודה לכולם!
תמונה/קובץ מצורף לא נמצא
תמונה/קובץ מצורף לא נמצא
פורסם במקור בפורום CODE613 ב18/08/2013 18:15 (+03:00)
אי אפשר היה להכניס הכל לארכיון אחד כי הוא היה גדול מ250 קילו ביט אז פיצלתי את זה לשניים.
תראו את זה בבקשה.
תודה לכולם!
תמונה/קובץ מצורף לא נמצא
תמונה/קובץ מצורף לא נמצא
פורסם במקור בפורום CODE613 ב18/08/2013 18:15 (+03:00)
זה נראה שיש לו נתון אחר של מעלות.
אם יש לו נתון אחר של מעלות מדוע במעלות 0, 90, 180 ו 270 נפגשת הנקודה האדומה עם הקשת ובמעלות אחרות לא?
פורסם במקור בפורום CODE613 ב18/08/2013 15:02 (+03:00)
שיפצתי לפי דבריך את הפקודה GetCoordinate
וזה מה שיצא, אבל זה לא עובד.
Private Function GetCoordinate(ByVal angle As Single) As Point
Dim Radian As Single = toRadians(angle)
Dim Dis As Integer
Dim WidthIsLarge As Boolean
If Me.ClientSize.Width > Me.ClientSize.Height Then
Dis = Me.ClientSize.Height / 2
WidthIsLarge = True
Else
Dis = Me.ClientSize.Width / 2
WidthIsLarge = False
End If
Dim x As Single = (Me.ClientSize.Width / 2) + CSng(Math.Cos(Radian) * Dis)
Dim y As Single = (Me.ClientSize.Height / 2) + CSng(Math.Sin(Radian) * Dis)
If WidthIsLarge = True Then
x = x * (Me.ClientSize.Height / Me.ClientSize.Width)
Else
y = y * (Me.ClientSize.Width / Me.ClientSize.Height)
End If
Return New Point(x - 6, y - 6)
End Function
פורסם במקור בפורום CODE613 ב18/08/2013 13:14 (+03:00)
ככה זה נראה, הכדור האדום לא נמצא בקצה של הקשת.
תמונה/קובץ מצורף לא נמצא
פורסם במקור בפורום CODE613 ב16/08/2013 00:04 (+03:00)
הנה שיפצתי את הקוד, כעת הוא עובד מצויין אבל רק אם החלון מרובע אבל אם החלון מלבני הנקודה האדומה מתנהגת בצורה מוזרה במעלות 0, 90, 180 ו 270 נפגשת עם הקשת ובמעלות אחרות לא. מדוע?
Public Class Form1
' Create start and sweep angles on ellipse.
Dim startAngle As Single = 0.0F
Dim sweepAngle As Single = 0.0F
Function toRadians(ByVal angle As Single) As Single
Return CSng(angle * (Math.PI / 180))
End Function
Private Sub Form1_MouseMove(sender As Object,
e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
'שינוי תחילת הקשת על פי הסמן
'startAngle = GetAngle(Me.ClientSize.Width \ 2, Me.ClientSize.Height \ 2, e.Location.X, e.Location.Y)
'שינוי אורך הקשת על פי הסמן
sweepAngle = GetAngle(Me.ClientSize.Width \ 2,
Me.ClientSize.Height \ 2,
e.Location.X,
e.Location.Y) - startAngle
Me.Invalidate()
End Sub
Function GetAngle(ByVal x1 As Single, ByVal y1 As Single,
ByVal x2 As Single, ByVal y2 As Single) As Single
Dim xDiff As Single = (x1 - x2)
Dim yDiff As Single = (y1 - y2)
Return (CSng(Math.Atan2(yDiff, xDiff)) * CSng(180 / Math.PI) + 180)
End Function
Private Function GetCoordinate(ByVal angle As Single) As Point
Dim Radian As Single = toRadians(angle)
Dim x As Single = (Me.ClientSize.Width \ 2) + CSng(Math.Cos(Radian) * (Me.ClientSize.Width \ 2))
Dim y As Single = (Me.ClientSize.Height \ 2) + CSng(Math.Sin(Radian) * (Me.ClientSize.Height \ 2))
Return New Point(x - 6, y - 6)
End Function
Private Sub Form1_Paint(sender As Object,
e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
' Create pen.
Dim blackPen As New Pen(Color.Black, 3)
' Create rectangle to bound ellipse.
Dim rect As New Rectangle(0, 0, Me.ClientSize.Width, Me.ClientSize.Height)
' Draw arc to screen.
e.Graphics.DrawArc(blackPen, rect, startAngle, sweepAngle)
e.Graphics.FillEllipse(Brushes.Red, New Rectangle(GetCoordinate(startAngle + sweepAngle), New Size(12, 12)))
End Sub
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Me.Height = Me.Width * 2
End Sub
End Class
פורסם במקור בפורום CODE613 ב15/08/2013 19:03 (+03:00)
הוספתי על פי הקוד שלך לקוד שלי, אבל עדיין אני רואה שזה לא מאה אחוז:
אולי תוסיף לקוד שלך ארוע תנועת סמן במקום להשתמש ב input number
Public Class Form1
' Create start and sweep angles on ellipse.
Dim startAngle As Single = 0.0F
Dim sweepAngle As Single = 270.0F
Dim RedEllipseAngle As Single
Private Sub Form1_MouseMove(sender As Object,
e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
'שינוי תחילת הקשת
'startAngle = GetAngle(Me.ClientSize.Width \ 2, Me.ClientSize.Height \ 2, e.Location.X, e.Location.Y)
'שינוי אורך הקשת
sweepAngle = GetAngle(Me.ClientSize.Width \ 2,
Me.ClientSize.Height \ 2,
e.Location.X,
e.Location.Y) - startAngle
RedEllipseAngle = GetAngle2(Me.ClientSize.Width \ 2,
Me.ClientSize.Height \ 2,
e.Location.X,
e.Location.Y)
Me.Invalidate()
End Sub
Function GetAngle(ByVal x1 As Single,
ByVal y1 As Single,
ByVal x2 As Single,
ByVal y2 As Single) As Single
Dim xDiff As Single = (x1 - x2)
Dim yDiff As Single = (y1 - y2)
Return (CType(Math.Atan2(yDiff, xDiff), Single) * CType((180 / Math.PI), Single) + 180)
End Function
Function GetAngle2(ByVal x1 As Single,
ByVal y1 As Single,
ByVal x2 As Single,
ByVal y2 As Single) As Single
Dim xDiff As Single = (x1 - x2)
Dim yDiff As Single = (y1 - y2)
Return (CType(Math.Atan2(yDiff, xDiff), Single) + 66)
End Function
Private Function GetCoordinate(ByVal angle As Single) As Point
Dim x As Single = (Me.ClientSize.Width \ 2) + (Math.Cos(angle) * (Me.ClientSize.Width \ 2))
Dim y As Single = (Me.ClientSize.Height \ 2) + (Math.Sin(angle) * (Me.ClientSize.Height \ 2))
Return New Point(x, y)
End Function
Private Sub Form1_Paint(sender As Object,
e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
' Create pen.
Dim blackPen As New Pen(Color.Black, 3)
' Create rectangle to bound ellipse.
Dim rect As New Rectangle(0, 0, Me.ClientSize.Width, Me.ClientSize.Height)
' Draw arc to screen.
e.Graphics.DrawArc(blackPen, rect, startAngle, sweepAngle)
e.Graphics.FillEllipse(Brushes.Red, New Rectangle(GetCoordinate(RedEllipseAngle), New Size(12, 12)))
End Sub
End Class
פורסם במקור בפורום CODE613 ב15/08/2013 15:08 (+03:00)
יפה מאוד!!
נראה לי עוד שלוש ארבע שורות ואתה הופך את זה לשעון אנולוגי!
פורסם במקור בפורום CODE613 ב15/08/2013 14:57 (+03:00)
הסמן בזמן צילום המסך היה למעלה באמצע איפה שהקשת מסתיימת בזמן תנועת הסמן הקשת גדלה/קטנה בהתאמה.
תמונה/קובץ מצורף לא נמצא
פורסם במקור בפורום CODE613 ב15/08/2013 13:44 (+03:00)
העיגול כידוע הוא בסך הכל 360 מעלות, מעלת האפס לפי מה שהבנתי עומדת בצד ימין באמצע הגובה בדיוק איפה שמספר 3 בשעון למשל מספר 6 בשעון עומד במעלה 90 ומספר 9 במעלה 180 ומספר 12 במעלה 270.
כשאני רוצה שקשת תתחיל במספר 9 בשעון עד מספר 12 אני קורא ל:
e.Graphics.DrawArc(blackPen, rect, startAngle, sweepAngle)
ואז startAngle יהיה 180 ואורך הקשת שזה sweepAngle יהיה 90 מעלות וכך נגיע מ180 ל270 .
הפונקציה שבתוך הקוד GetAngle מחזירה כמה מעלות יש בין מיקום הסמן למרכז החלון ואז רואים שבאמת הקשת מצטיירת עד מקום הסמן, השאלה היא מה ה X והY של אותה נקודה שבה מסתיימת הקשת.
כדי להבין את זה יותר באמת מומלץ להריץ את הקוד.
פורסם במקור בפורום CODE613 ב15/08/2013 13:32 (+03:00)
העינין הוא שכמו שרואים בדוגמא שצירפתי יש לי מידע כמה מעלות יש בין נקודת האמצע של החלון למיקום הסמן ועל פי זה אני קורא לפונקציה e.Graphics.DrawArc ופונקציה זו באמת יודעת לצייר את הקשת עד המעלה המבוקשת כלומר עד לסמן, אבל אני צריך לדעת מה הנקודה הזו בשפת הקואורדינטות כלומר מה הX וה Y של נקודה זו, כך שמבחינה מתמטית יש לי את הפונקציה אני רק צריך להמיר מידע זה לקואורדינטות.
בכל אופן איפה ממולץ לשאול שאלות כאלו?
פורסם במקור בפורום CODE613 ב15/08/2013 13:01 (+03:00)
הנה הקוד שעשיתי: [פתחו פרוייקט חדש ופשוט הדביקו שם והריצו.]
Public Class Form1
' Create start and sweep angles on ellipse.
Dim startAngle As Single = 0.0F
Dim sweepAngle As Single = 270.0F
Private Sub Form1_MouseMove(sender As Object,
e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
'שינוי תחילת הקשת
'startAngle = GetAngle(Me.ClientSize.Width \ 2, Me.ClientSize.Height \ 2, e.Location.X, e.Location.Y) + 180
'שינוי אורך הקשת
sweepAngle = GetAngle(Me.ClientSize.Width \ 2, Me.ClientSize.Height \ 2, e.Location.X, e.Location.Y) + 180
Me.Invalidate()
End Sub
Function GetAngle(ByVal x1 As Single,
ByVal y1 As Single,
ByVal x2 As Single,
ByVal y2 As Single) As Single
Dim xDiff As Single = (x1 - x2)
Dim yDiff As Single = (y1 - y2)
Return (CType(Math.Atan2(yDiff, xDiff), Single) * CType((180 / Math.PI), Single))
End Function
Private Sub Form1_Paint(sender As Object,
e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
' Create pen.
Dim blackPen As New Pen(Color.Black, 3)
' Create rectangle to bound ellipse.
Dim rect As New Rectangle(0, 0, Me.ClientSize.Width, Me.ClientSize.Height)
' Draw arc to screen.
e.Graphics.DrawArc(blackPen, rect, startAngle, sweepAngle)
End Sub
End Class
אם תרחפו עם העכבר מעל החלון תראו איך שהקשת גודלת וקטנה בהתאם למיקום הסמן, השאלה שלי איך אני יכול לדעת מה הנקודה שבה הקשת מסתיימת? אני רוצה למשל לשים בסוף הקשת איזו אליפסה או פקד כל שהוא.
תודה לכולם.
פורסם במקור בפורום CODE613 ב14/08/2013 23:01 (+03:00)
הנה קוד פשוט עם iTextSharp
Imports iTextSharp.text.pdf
Imports iTextSharp.text
Imports System.IO
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim pdfDoc As New Document()
Dim pdfWrite As PdfWriter = PdfWriter.GetInstance(pdfDoc,
New FileStream("tryme2.pdf", FileMode.Create))
pdfDoc.Open()
pdfDoc.Add(New Paragraph("Hello World"))
pdfDoc.NewPage()
pdfDoc.Add(New Paragraph("Hello World Again"))
pdfDoc.Close()
End Sub
End Class
להורדת הקוד מקור של iTextSharp
http://sourceforge.net/projects/itextsharp/
פורסם במקור בפורום CODE613 ב14/08/2013 10:32 (+03:00)
באמת מרשים!
@דוד ל.ט.
שים לב שאת מפת הנקודות של הpath לא כתבתי ידנית.
אני נעזרתי בהמרה מSVG לXAML ע"י התוכנה inkspace,
אבל אפשר לצייר ישירות בBlend של מיקרוספט.
אם תוכל להרחיב קצת אודות inkspace ו בBlend
פורסם במקור בפורום CODE613 ב15/08/2013 13:09 (+03:00)
@דוד ל.ט.
עכ"פ בWPF זה עוד יותר פשוט ללא שורת קוד בודדת.
אפשר דוגמא? תודה.
פורסם במקור בפורום CODE613 ב13/08/2013 00:31 (+03:00)
@דוד ל.ט.
"קובנציונאלית" אי אפשר.
לא הבנתי כוונתך.
מצאתי כמה קודים ברשת וחיברתי אותם לדבר אחד, התוצאה פתח גדול ליצירת טופס בכל צורה שיעלה על הדעת עם צל!
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Drawing.Imaging
Public Class Form1
Private WithEvents HS, VS As New HScrollBar
Private Sub HScrollBars_Scroll(ByVal Sender As System.Object,
ByVal E As System.Windows.Forms.ScrollEventArgs)
Dim Gp As New GraphicsPath
Dim WX, HY As Integer
WX = Me.Width
HY = Me.Height
Dim Points(11) As Point
Points(0) = New Point(0, HS.Value)
Points(1) = New Point((HS.Value / VS.Value), (HS.Value / VS.Value))
Points(2) = New Point(HS.Value, 0)
Points(3) = New Point((WX - HS.Value), 0)
Points(4) = New Point((WX - (HS.Value / VS.Value)), (HS.Value / VS.Value))
Points(5) = New Point(WX, HS.Value)
Points(6) = New Point(WX, (HY - HS.Value))
Points(7) = New Point((WX - (HS.Value / VS.Value)), (HY - (HS.Value / VS.Value)))
Points(8) = New Point((WX - HS.Value), HY)
Points(9) = New Point(HS.Value, HY)
Points(10) = New Point((HS.Value / VS.Value), (HY - (HS.Value / VS.Value)))
Points(11) = New Point(0, (HY - HS.Value))
For I As Integer = 0 To 11 Step 3
Gp.AddCurve(New Point() {Points(I), Points(I + 1), Points(I + 2)})
Next
Me.Region = New Region(Gp)
Gp.Dispose()
End Sub
Private Sub Form1_Load(ByVal Sender As System.Object, ByVal E As System.EventArgs) Handles MyBase.Load
HS.Minimum = 1
VS.Minimum = 2
HS.Maximum = 100
VS.Maximum = 25
HS.Size = New Size(100, 20)
VS.Size = New Size(100, 20)
HS.Location = New Point(CInt((Width - 100) / 2), 0)
VS.Location = New Point(CInt((Width - 100) / 2), 25)
AddHandler HS.Scroll, AddressOf HScrollBars_Scroll
AddHandler VS.Scroll, AddressOf HScrollBars_Scroll
Me.Controls.AddRange(New Control() {HS, VS})
End Sub
Dim CS_DROPSHADOW As Integer = 131072
Protected Overrides ReadOnly Property CreateParams As CreateParams
Get
' add the drop shadow flag for automatically drawing
' a drop shadow around the form
Dim cp As CreateParams = MyBase.CreateParams
cp.ClassStyle = (cp.ClassStyle Or CS_DROPSHADOW)
Return cp
End Get
End Property
End Class
פורסם במקור בפורום CODE613 ב12/08/2013 22:29 (+03:00)
יש לי טופס בצורת עיגול ע''י שהרקע של העיגול הוא בצבע אדום למשל והגדרתי את הצבע האדום כצבע שיהיה שקוף את הגבולות הגדרתי - ללא, וכך הטופס נראה עגול , השאלה שלי איך אפשר שיהיה צל לעיגול הזה כדרך שיש צל לטופס כאשר יש לו גבולות?
תודה לכולם.
פורסם במקור בפורום CODE613 ב12/08/2013 09:04 (+03:00)
ראה אם זה מתאים בישבילך:
http://support.microsoft.com/kb/317535
ויש גם את זה:
http://support.microsoft.com/Default.aspx?kbid=817248
ומעינין לעינין באותו עינין התקשרות לDLL בשפת C++ מ VBA:
http://www.codeproject.com/Articles/17733/A-C-DLL-for-Excel-that-uses-Arrays-and-Ranges
ויש לזה יתרון שלא צריך ב VBA לעשות רפרנס לDLL
פורסם במקור בפורום CODE613 ב09/08/2013 16:17 (+03:00)
והנה אותה הפונקציה ב VBNET
Public Function UnicodeEncode(ByVal str As String) As String
If String.IsNullOrEmpty(str) Then Exit Function
Dim i, a
For i = 1 To Len(str)
a = AscW(Mid(str, i, 1))
If a > -1 And a < 127 Then
UnicodeEncode = UnicodeEncode & "%" & New String("0", 2 - Len(Hex(a))) & Hex(a)
ElseIf a > -1 Or a < 65535 Then
UnicodeEncode = UnicodeEncode & "%u" & New String("0", 4 - Len(Hex(a))) & Hex(a)
End If
Next
End Function
פורסם במקור בפורום CODE613 ב07/12/2013 22:06 (+02:00)
אני רוצה לחדד את הנקודה, בכל תוכנה שרוצים להגן עליה יש שני חלקים:
ולכן כעת שיש לנו ערפול מצויין אם ע''י התוכנות שהזכרו ואם ע''י מאקרו יש לנו פתרון לחלק הראשון, אבל לחלק השני אנו צריכים עדיין פתרון.
מה שחשבתי הוא לקרוא את הDLL ישירות ולמצוא בו את שמות המשתנים ולהוסיף לכל שם תוים מיוחדים כמו מעבר עמוד או מעבר שורה וכדומה כדי שיהיה בלתי אפשרי לפתוח DLL זה ברפלקטור.
והשאלה שלי איך עושים את זה? איך אפשר למצוא בתוך כל הבינארי את שמות המשתנים? בקיצור איך בנוי הDLL ?
פורסם במקור בפורום CODE613 ב07/08/2013 11:34 (+03:00)