אולי תעלה איזה קובץ דוגמא כדי לחוש את הבעיה?
פורסם במקור בפורום CODE613 ב08/10/2013 20:51 (+03:00)
אולי תעלה איזה קובץ דוגמא כדי לחוש את הבעיה?
פורסם במקור בפורום CODE613 ב08/10/2013 20:51 (+03:00)
לגבי הריענון מצאתי את זה:
Private Declare Function SHChangeNotify Lib "Shell32.dll" (ByVal wEventID As Int32, _
ByVal uFlags As Int32, ByVal dwItem1 As Int32, ByVal dwItem2 As Int32) As Int32
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
SHChangeNotify(&H8000000, &H0, 0, 0)
End Sub
אבל עדיין אני לא ידע איך להגדיר שהאייקון ילקח מתוך My.Resources
פורסם במקור בפורום CODE613 ב04/10/2013 13:38 (+03:00)
כדי שסוג קובץ מסויים יקבל אייקון רשמתי בריגיסטרי את הסיומת שלו למשל :
HKEY_CLASSES_ROOT\.xxxx
ועשיתי לו ענף משנה : DefaultIcon עם ערך ברירת מחדל שמכיל את כתובת האייקון.
כעת אני צריך לדעת שני דברים:
תודה לכולם.
פורסם במקור בפורום CODE613 ב04/10/2013 10:50 (+03:00)
@דוד ל.ט.
אבל הלינק ההוא מגוגל קוד אולי שווה הצצה.
עשיתי פרוייקט חדש עם רפרנס ל libpdf
וזה הקוד
private void button1_Click(object sender, EventArgs e)
{
using (FileStream file = File.OpenRead(@"C:\S.pdf")) // in file
{
var bytes = new byte[file.Length];
file.Read(bytes, 0, bytes.Length);
using (var pdf = new LibPdf(bytes))
{
byte[] pngBytes = pdf.GetImage(0, ImageType.PNG); // image type
using (var outFile = File.Create(@"C:\S.PNG")) // out file
{
outFile.Write(pngBytes, 0, pngBytes.Length);
}
}
}
}
אבל קיבלתי שגיאה:
Could not load file or assembly 'libpdf.dll' or one of its dependencies. המודול שצוין לא נמצא.
אני אבדוק את GhostScriptSharp שהבאת אבל הוא די שמן משהו כמו 12 מגה.
@דוד ל.ט.
iTextSharp לא מטפל כלל וכלל ברינדור PDF לתצוגה, וממילא זה ממש לא התפקיד והתחום שלו.
נכון, אבל תקן אותי אם אני טועה, אני חושב שכיון שיש לנו את כל המידע על דף הPDF אנו יכולים ליצור תמונה עם פקודות DrawImage ו DrawString שהרי זה לא בעיה לחלץ מתוך הדף את התמונות שלו וכן כנראה יש דרך לדעת כל אות ואות מה ה X וה Y שלה וכן מה הגופן שלה וכו' וכך אפשר ליצור תמונה שתראה ממש כמו דף ה PDF. מי שמכיר את ITEXT טוב בטח ידע להגיד אם אני צודק או לא.
פורסם במקור בפורום CODE613 ב03/10/2013 19:37 (+03:00)
תודה, אם אפשר אני מעדיף להמשיך לעבוד עם ITEXT כיון שבכל מקרה הוא כבר שימוש אצלי ועדיף לי למעט בנפח, אבל אי אפשר אשמח לקבל דוגמאות אחרות.
פורסם במקור בפורום CODE613 ב03/10/2013 14:21 (+03:00)
מישהו ראה פרוייקט כזה? או אולי יש למישהו רעיון איך לעשות את זה עם ITextSharp ?
תודה.
פורסם במקור בפורום CODE613 ב03/10/2013 09:47 (+03:00)
בפורום אוצר החכמה מבקשים לדעת היאך מוסיפים בצד כל תגובה את הלחצן של הבעת תודה, הפורום שם ממש כמו פה באותה תבנית וכו', אודה למי שיוכל להנחות אותי ואעביר להם את המידע.
פורסם במקור בפורום CODE613 ב01/10/2013 18:49 (+03:00)
וינדוס 7, קימפלתי בויז'ואל סטודיו 2010.
פורסם במקור בפורום CODE613 ב26/09/2013 23:43 (+03:00)
אצלי אלו התוצאות:
f3040506
r i 6
g i 5
b i 4
a i f3
r p 6
g p 5
b p 4
a p f3
pointer take (3.806000 seconds).
shift take (3.712000 seconds).
פורסם במקור בפורום CODE613 ב26/09/2013 23:09 (+03:00)
באמת בהתחלה עבדתי מול הדטה-גריד בעצמו וDataGridView.SuspendLayout לא עזר כלל.
אח''כ הוספתי טבלה ל DataSet וקישרת אותה לדטה-גריד עם BindingSource , וכשמילאתי עבדתי עם DataTable הנ''ל ואז זה נהיה הרבה יותר מהר.
אח''כ עשיתי את זה עוד יותר מהר ע''י DataTable1.BeginLoadData לפני המילוי ואחר המילוי DataTable1.EndLoadData.
אחר כך עשיתי את זה עוד יותר מהר ע''י שאת את העמודות העיקריות מילאתי בדרך הנ''ל ואת העמודות הטפלות יותר ע''י טריד חדש שמילא את הDataTable1 תוך כדי שמשתמש כבר מפעיל את הדטה-גריד.
אחר כך עשיתי את זה עוד יותר מהיר כי חשבתי למה המשתמש צריך לראות בבת אחת בתוך הדטה-גריד 800,000 שורות או יותר, די שיראה כל פעם 1000 שורות למשל, ואז עשיתי כמו בחיפוש של גוגל שיש מתחת לתוצאות מספרים שאתה לוחץ ועובר לדף הבא של התוצאות וכך עשיתי, חילקתי את כל השורות שצריך להציג ב1000 והוספתי לפי הצורך LinkLabel עבור כל 1000 שורות וכך המשתמש עובר על כל הכמות ומוצגות לו כל פעם 1000 שורות חדשות.
אבל מה יש קצת בעיה עם למלא עם טריד את ה DataTable והיא שקופצת לפעמים שגיאה כזו מהדטה-גריד:
BindingSource cannot be its own data source. Do not set the DataSource and DataMember properties to values that refer back to BindingSource.
פורסם במקור בפורום CODE613 ב17/09/2013 22:01 (+03:00)
יש לי בעיה כזו:
מצד אחד אני רוצה להוסיף כמה אלפי שורות לDataGridView ומצד שני אני רוצה שהמשתמש יוכל לעצור את התהליך באמצע אם ירצה בכך.
כדי לעצור את התהליך השתמשתי בטריד חדש שימלא את הDataGridView אבל אז נעלם מהDataGridView הפס גלילה!
וגם תהליך ההוספה נעשה איטי מאוד.
ניסיתי גם להוסיף שורות בצורה רגילה ללא טריד חדש וכדי לעשות עצירה הוספתי בתוך לולאת ההוספה Application.DoEvents והשארתי רק את לחצן העצירה זמין, אבל גם אז ההוספה הפכה להיות איטית מאוד מאוד.
אז מה עושים?
פורסם במקור בפורום CODE613 ב15/09/2013 20:12 (+03:00)
ראו זה פלא!
אני מריץ את התוכנית לוחץ על לחצן ומקבל הודעה שהמותקנים לי 409 גופנים, אח''כ אני מתקין גופן אחד ושוב לוחץ על הלחצן ושוב מקבל הודעה שמותקנים רק 409 גופנים, ורק אחר שאני סוגר את התוכנית ופותח שוב ולוחץ מופיע בהודעה שמותקנים 410 גופנים, אותה הבעיה ישנה גם בהסרת גופן,
כלומר האוסף לא מתעדכן כאשר במערכת יש שינוי, אלא רק לאחר ריצה מחדש של התוכנית,
מה עושים? איך מעדכנים את רשימת הגופנים בזמן ריצה?
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim fonts As New InstalledFontCollection
MsgBox(fonts.Families.Length)
End Sub
פורסם במקור בפורום CODE613 ב11/09/2013 23:14 (+03:00)
תודה לכולם, אני אנסה לשים Try בבנאי ובארוע טעינה ולראות.
רציתי רק לדעת מה המשמעות של השגיאה הזו ומתי היא מתוכננת לקפוץ.
פורסם במקור בפורום CODE613 ב10/09/2013 15:30 (+03:00)
קיבלתי כזו הודעת שגיאה מיד בהרצת התוכנית עוד לפני שהופיעו חלון ה SplashScreen
יש לציין שזה לא קורא תמיד אלא לפעמים,
יש למישהו הסבר מה צריך לתקן? תודה רבה לכולם וגמר חתימה טובה!
System.InvalidOperationException: Invoke or BeginInvoke cannot be called on a control until the window handle has been created.
at System.Windows.Forms.Control.WaitForWaitHandle(WaitHandle waitHandle)
at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.HideSplashScreen()
at System.EventHandler.Invoke(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
פורסם במקור בפורום CODE613 ב07/09/2013 21:24 (+03:00)
אתה יכול להראות איזה קוד לדוגמא ? [לא משנה באיזו שפה.]
תודה רבה.
פורסם במקור בפורום CODE613 ב28/08/2013 19:44 (+03:00)
השיטה למצוא את נקודות המתאר כלומר את הנקודות הכי חיצוניות באובייקט הן כדלקמן:
עוברים פיקסיל אחר פיקסיל אם הפקסיל הנבדק שחור עושים רשימה של 8 פיקסילים שמסביבו ואז בודקים את הרשימה אם אחד מהשמונה פיקסילים לא שחור הפקסיל הנבדק נכנס לרשימת נקודות המתאר. כי אם כל השמונה פיקסילים המקיפים הם שחורים ברור שהפיקסיל הנבדק אינו בקצה אלא בתוך.
כעת מה הבעיה?
והעיקר איך ממירים את רשימת נקודות המתאר לנתיב גרפי?
פורסם במקור בפורום CODE613 ב28/08/2013 19:15 (+03:00)
תמיד טוב לשפר את הביצועים של הקוד, אבל כרגע זה לא קריטי כל כך.
אולי בהמשך אחפש את הספריות שעליהן אתה מדבר.
מה שבוער לי כרגע זה לדעת איך אחר שקיבלתי רשימה של כל הנקודות של המתאר אני מסדר אותם אחד אחר השני, ומעביר אותם כארגומנט לציור GraphicsPath? שהרי הGraphicsPath הוא בעצם נקודות שמתוח בינהם קו ישר, ולפי הסדר שהם מסודרות כך סדר הקוים, מנקודה ראשונה לשניה קו, ומשניה לשלישית קו וכו', והבעיה היא שסדר הנקודות שאני מקבל לאחר הלולאה הוא לא מתאים ומתקבלת צורה לא נכונה.
פורסם במקור בפורום CODE613 ב25/08/2013 19:28 (+03:00)
יש לי קוד שנותן רק את נקודות המתאר של כל גוף וכמו שרואים בתמונות המצורפות, השאלה שלי האם יש למישהו רעיון איך אפשר לסדר את הנקודות של המתאר שנתקבלו בצורה שיהיה אפשר להשתמש בהם ב GraphicsPath כלומר אני רוצה לשמור את רשימת הנקודות ולהשתמש בהם שוב במקומות אחרים ע''י GraphicsPath שיצייר לי את הצורה עם הנקודות.
הנה הקוד:
Function Outline_only(ByVal bmp As Bitmap) As Bitmap
Dim newbmp As New Bitmap(bmp)
For X = 0 To bmp.Width - 1
For Y = 0 To bmp.Height - 1
If bmp.GetPixel(X, Y) <> Color.FromArgb(255, 255, 255) Then
Dim p_arr(7) As Point
get_8_points(X, Y, p_arr)
Dim Is_missing_point As Boolean = False
For Each p As Point In p_arr
If p.X > -1 AndAlso p.Y > -1 AndAlso _
p.X < bmp.Width AndAlso p.Y < bmp.Height Then
If bmp.GetPixel(p.X, p.Y) = Color.FromArgb(255, 255, 255) Then
Is_missing_point = True
Exit For
End If
Else
Is_missing_point = True
Exit For
End If
Next
If Is_missing_point = False Then
newbmp.SetPixel(X, Y, Color.FromArgb(255, 255, 255))
End If
End If
Next
Next
Return newbmp
End Function
Private Sub get_8_points(X As Integer, Y As Integer, ByRef arr() As Point)
arr(0) = New Point(X - 1, Y)
arr(1) = New Point(X + 1, Y)
arr(2) = New Point(X, Y - 1)
arr(3) = New Point(X, Y + 1)
arr(4) = New Point(X - 1, Y - 1)
arr(5) = New Point(X + 1, Y + 1)
arr(6) = New Point(X - 1, Y + 1)
arr(7) = New Point(X + 1, Y - 1)
End Sub
תמונה/קובץ מצורף לא נמצא
תמונה/קובץ מצורף לא נמצא
פורסם במקור בפורום CODE613 ב22/08/2013 22:23 (+03:00)
כמה אמצעי זהירות שכדאי לנקוט בהם כמובן זו לא הרשימה כולה:
פורסם במקור בפורום CODE613 ב24/08/2013 23:49 (+03:00)
על איזה סוג פריצות מדובר? דרך האינטרנט? או פריצות תוכנה? או פריצות חומרה?
פורסם במקור בפורום CODE613 ב23/08/2013 17:17 (+03:00)