public void UpdateWebImage() { SKCanvas canvas = Surface.Canvas; Surface.Canvas.Clear(Color.Gray.ToSKColor()); NodePaint = new SKPaint() { Style = SKPaintStyle.Fill, Color = ((Color)Application.Current.Resources["TraceColor"]).ToSKColor() }; LinePaint = new SKPaint() { Style = SKPaintStyle.Stroke, Color = ((Color)Application.Current.Resources["TraceColor"]).ToSKColor() }; Task[] tasks = new Task[WebNodes.Count]; int x = 0; foreach (WebNode node in WebNodes) { tasks[x++] = Task.Run(() => { canvas.DrawCircle((float)node.Position.X * PixelsPerPoint, (float)node.Position.Y * PixelsPerPoint, 4, NodePaint); foreach (WebNode node2 in WebNodes) { double DistanceSquared = Math.Abs(node.Position.Y - node2.Position.Y) * Math.Abs(node.Position.Y - node2.Position.Y) + Math.Abs(node.Position.X - node2.Position.X) * Math.Abs(node.Position.X - node2.Position.X); if (DistanceSquared < LinkLength.Value * LinkLength.Value) { canvas.DrawLine((float)node.Position.X * PixelsPerPoint, (float)node.Position.Y * PixelsPerPoint, (float)node2.Position.X * PixelsPerPoint, (float)node2.Position.Y * PixelsPerPoint, LinePaint); } } }); } Task.WaitAll(tasks); WebDisplay.UpdateImage(Surface.Snapshot()); }
void dis_DocumentComplete(WebDisplay sender, ChromiumEngine.WindowsForms.EventArgs.UrlEventArgs e) { try { if (sender.Equals(Browser)) pictureBox5.Image = Properties.Resources.Refresh; txturl.Text = e.Url; if (e.Url.StartsWith("https://")) { txturl.BackColor = Color.LightGreen; textBox2.BackColor = Color.LightGreen; } else { txturl.BackColor = Color.White; textBox2.BackColor = Color.White; } } catch { } }
void dis_NewWindowRequested(WebDisplay sender, ChromiumEngine.WindowsForms.EventArgs.NewWindowRequestEventArgs e) { AddTab(e.Url); }
void dis_StatusChanged(WebDisplay sender, ChromiumEngine.WindowsForms.EventArgs.StatusMessageEventArgs e) { try { status.Visible = !string.IsNullOrWhiteSpace(e.Text); if (status.Visible == false) return; if (e.Text.Length < 51) status.Text = e.Text; else status.Text = e.Text.Substring(0, 51) + "..."; } catch { } }
void dis_BeginDocumentLoading(WebDisplay sender, ChromiumEngine.WindowsForms.EventArgs.BeginFrameLoadingEventArgs e) { //try //{ if (sender.Equals(Browser)) { //faviconpct.SizeMode = PictureBoxSizeMode.StretchImage; pictureBox5.Image = Properties.Resources.stop; faviconpct.Image = Properties.Resources.loading; FaviconCollection[sender] = Properties.Resources.favicons; ImageAnimator.Animate(faviconpct.Image, delegate { faviconpct.Invalidate(); }); } BackgroundWorker bcw = new BackgroundWorker() { WorkerSupportsCancellation = true }; bcw.DoWork += delegate { Image favicon = sender.GetFaviconImageFromDocument(); (sender.Parent as QTabPage).Icon = Icon.FromHandle(((Bitmap)favicon).GetHicon()); if (sender.Equals(Browser)) { FaviconCollection[sender] = favicon; faviconpct.Image = favicon; } History.Add(sender.DocumentTitle, sender.Url, DateTime.Now, Bookmarking.ImageToBase64(favicon, System.Drawing.Imaging.ImageFormat.Icon)); bcw.Dispose(); }; bcw.RunWorkerAsync(); //} //catch { } }
void dis_ShowJSDialog(WebDisplay sender, ChromiumEngine.WindowsForms.EventArgs.ShowJSDialogEventArgs e) { switch (e.Type) { case ChromiumEngine.Enum.JSDialogType.Alert: MessageBox.Show(e.Message, "The current page says:"); break; case ChromiumEngine.Enum.JSDialogType.Confirm: e.Result = MessageBox.Show(e.Message, "The current page asks:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK; break; case ChromiumEngine.Enum.JSDialogType.Prompt: e.PromptInputText = Microsoft.VisualBasic.Interaction.InputBox(e.Message, "The page requests the following:", e.DefaultPromptInputText); e.Result = true; break; } e.Handled = true; }
void dis_AddressChanged(WebDisplay sender, ChromiumEngine.WindowsForms.EventArgs.AddresseChangedEventArgs e) { try { if (sender.Equals(Browser)) txturl.Text = e.Url; } catch { } }
void dis_BeginFrameLoading(WebDisplay sender, BeginFrameLoadingEventArgs e) { if (sender.Equals(Browser)) { dis_StatusChanged(sender, new StatusMessageEventArgs("Loading " + e.Frame.Url, ChromiumEngine.Enum.StatusMessageType.Text)); pictureBox5.Image = Properties.Resources.stop; faviconpct.Image = Properties.Resources.loading; ImageAnimator.Animate(faviconpct.Image, delegate { faviconpct.Invalidate(); }); } }
private void dis_FrameComplete(WebDisplay sender, FrameCompleteEventArgs e) { if (sender.Equals(Browser)) { dis_StatusChanged(sender, new StatusMessageEventArgs(string.Empty, ChromiumEngine.Enum.StatusMessageType.Text)); pictureBox5.Image = Properties.Resources.Refresh; faviconpct.Image = FaviconCollection[sender]; } }
internal void AddEvents(WebDisplay dis) { dis.DocumentComplete += dis_DocumentComplete; dis.BeginFrameLoading += dis_BeginDocumentLoading; dis.StatusChanged += dis_StatusChanged; dis.DocumentTitleChanged += delegate(WebDisplay sender, DocumentTitleChangedEventArgs e) { sender.Parent.Text = e.Title; }; dis.BeginFrameLoading += dis_BeginFrameLoading; dis.FrameComplete +=dis_FrameComplete; dis.NewWindowRequested += dis_NewWindowRequested; dis.AddressChanged += dis_AddressChanged; dis.ShowJSDialog += dis_ShowJSDialog; }
public void AddTab(string u = "") { QTabPage tbp = new QTabPage(); tbp.Text = "No Title"; WebDisplay view = new WebDisplay(); WebPreferences prefs = new WebPreferences(); prefs.UniversalAccessFromFileUrlsAllowed = false; prefs.WebGLDisabled = false; view.Preferences = prefs; view.InitializeEngine("about:blank"); view.Focus(); tbp.Controls.Add(view); TabC.Controls.Add(tbp); TabC.ActiveTabPage = tbp; view.Anchor = (AnchorStyles)(AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top); if (panel1.Visible == false) { view.Size = new System.Drawing.Size(tbp.Width, tbp.Height); view.Location = new Point(0, 0); } else { view.Size = new System.Drawing.Size(tbp.Width, tbp.Height - panel1.Height); view.Location = new Point(0, panel1.Height); } //ShowNavBar(view); if (!string.IsNullOrEmpty(u)) if (u.Contains("\\") && !u.StartsWith("file://")) view.OpenDocument(); else if (IsURL(u)) view.Navigate(u); else Search(u); OnTabChangedTriggered(); DoOverflow(); AddEvents(view); FaviconCollection.Add(view, Properties.Resources.favicons); view.Disposed += delegate(object sender, EventArgs e) { FaviconCollection.Remove((WebDisplay)sender); }; //AddContextMenus(view); btnaddtab.Left = tbp.TabButton.Left + tbp.TabButton.Width - 5; }