|
|
It looks good. I'm playing round with a Silverlight code control as a bit of fun. So far, it's been pretty good fun.
|
|
|
|
|
I so want to move my hosting so that I can use .NET on my site!
|
|
|
|
|
Notepad++ (free) highlights pretty well and you can export in HTML.
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Good grief! I use Notepad++ all the time ... never noticed that!!!! Off to have a rummage ...
Thanks!
|
|
|
|
|
Heh. After I posted I noticed you stated XML highlighting wasn't acceptable,
so you may not like it
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Well, really that's just me being anal about it. I just wanna have XAML snippets on my site in the exact format one gets used to viewing it on screen. I actually find code more difficult to read if the highlighting is wrong than with no highlighting at all!
|
|
|
|
|
Yeah
Not nearly as difficult to me as trying to copy code from a screenshot hehe.
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
haha!
|
|
|
|
|
That's why the friendly screenshot people provide downloads.
|
|
|
|
|
Hi there,
I've found this article by Bea Stollnitz and downloaded the source and converted to vb.net. I believe I have my conversion complete, but one thing is still not working as I've tried to get it and pulled too many hairs out. Hopefully someone can help me spot what I'm missing.
Ok, drag & drop works fine in the converted code, I just don't get the InsertionAdorner working in vb.net, I've setup breakpoints in code and all code is being executed, but for the life of me the InsertionAdorner does not become visible. Even the DrawLine functions are being called!
I'm at a loss and I need this in vb.net, the original C# project works just fine, I just can't find out what I'm missing!
Thanks,
Scott
|
|
|
|
|
If you want to convert this to VB.NET, use Reflector to open the exe up in Bea's solution (File > Open... pick the file). Then, expand the various items in DragDropListBox and choose Visual Basic in the language combo. Click Space to see the Disassembler window, and choose each class (e.g. Album) in turn. At the bottom of the Disassembler window is a link "Expand Methods" - click this to see the converted code.
|
|
|
|
|
Thanks for your reply, I'll give Reflector a go to see if I can see something, but with my experience the code that comes out of reflector can be somewhat cryptic at best. I did supply my attempt at converting the code in my original message, not sure if you downloaded and looked at it, the code I have compiles and runs fine in VB.net, just missing the InsertionAdorner working.
Anyone willing to take a look at my already attempt at converting?
Thanks,
Scott
|
|
|
|
|
Got it, with the help of Reflector.
The online converter took this code
pen = new Pen { Brush = Brushes.Gray, Thickness = 2 };
and spit out
pen = New Pen()
conveniently leaving out the
pen.Brush = Brushes.Gray
pen.Thickness = 2
and a couple other conversions that I had to fix that were similar.
The converter could of done:
pen = New Pen() With {.Brush=Brushes.Gray, Thickness=2 }
but to play it safe because VS08 only supports that it just left it out..
Problem fixed!
|
|
|
|
|
I am trying to make a simple WPF app that takes a regex typed by the user into one RichTextBox, and highlights the matches in a second RichTextBox where the user can type in test data.
I will admit that this is my first foray into WPF, and theres probably something I am doing wrong. I am having two problems:
1. My highlights are not showing up in the right place.. they are off by a couple of characters early in the document, and towards the end they are nowhere close.
2. The performance I am seeing is abominable To highlight about 200 three-character matches in a ~60kb document is taking over ten seconds. There are scenarios where I would need to highlight thousands of matches instead.. I can't fathom how long that would take. I am pretty certain the slow-down is in the action of highlighting, not processing the regex itself.
Just pasting the plain text into the RichTextBox in the first place (where it isnt executing any of my code) takes at least three seconds.
This is a rewrite of a windows forms app that I made a couple of years ago, and I managed to skirt around some of the RichTextBox performance issues there by using Suspend/ResumeLayout() but there doesn't appear to be an analogous tactic in WPF..
I should probably also note that no exceptions are actually being thrown. This was my first guess for the slow-down issue since exceptions take a while to churn out.. but the catch(...) in my code isn't being hit...
My machine is a Pentium 4 2.2ghz running Windows XP SP2. Here is the meat of my code.. what am I doing wrong?
void HighlightRegexMatches()
{
if (!pHighlighting)
{
pHighlighting = true;
Regex r = null;
string p = new TextRange(
rtbPattern.Document.ContentStart,
rtbPattern.Document.ContentEnd
).Text.Replace("\r\n", "");
try
{
r = new Regex(p);
}
catch (Exception ex)
{
pHighlighting = false;
}
if (r == null) return;
try
{
string s = new TextRange(
rtbTestData.Document.ContentStart,
rtbTestData.Document.ContentEnd
).Text;
MatchCollection c = r.Matches(s);
FlowDocument d = rtbTestData.Document;
TextRange allText = new TextRange(d.ContentStart, d.ContentEnd);
allText.ApplyPropertyValue(TextElement.BackgroundProperty, Brushes.Transparent);
int count = 0;
foreach (Match m in c)
{
TextPointer start = d.ContentStart.GetPositionAtOffset(m.Index);
TextPointer end = d.ContentStart.GetPositionAtOffset(m.Index + m.Length);
TextRange t = new TextRange(start, end);
t.ApplyPropertyValue(TextElement.BackgroundProperty, Brushes.HotPink);
count++;
}
}
catch (Exception ex)
{
}
finally
{
pHighlighting = false;
}
}
}
|
|
|
|
|
I'm also attempting to high light text from regular expression matches using a wpf richtextbox. There seems to be 2 characters added to the start of the text in the richtextbox that is throwing off the match.index. However adding 2 to the index doesn't help in all cases. I'll post if I come up with a solution. Here is what I currently have.
private void applyRegex_Click(object sender, RoutedEventArgs e)
{
TextRange tr = new TextRange(this.testBox.Document.ContentStart, this.testBox.Document.ContentEnd);
this.testResults.Text += (tr.Text + "\n");
MatchCollection matches = CheckForRegexPatternMatches(findElementTagsRegex, tr);
if (matches.Count > 0)
{
foreach (Match match in matches)
{
if (match.Success)
{
this.testResults.Text += "SUCCESS\n";
this.testResults.Text += "Value:" + match.Value + "\n";
this.testResults.Text += "Offset: " + match.Index.ToString() + "\n";
this.testResults.Text += "Length:" + match.Length.ToString() + "\n";
this.testResults.Text += "Offset + Length: " + (match.Index + match.Length).ToString() + "\n";
TextRange matchRange = null;
//if (match.Index == 0)
//{
// matchRange = new TextRange(tr.Start.GetPositionAtOffset(match.Index), tr.Start.GetPositionAtOffset(match.Index + match.Length));
//}
//else
//{
// matchRange = new TextRange(tr.Start.GetPositionAtOffset(match.Index + 2), tr.Start.GetPositionAtOffset(match.Index + 2 + match.Length));
//}
matchRange =
new TextRange(this.testBox.Document.ContentStart.GetPositionAtOffset(match.Index),
this.testBox.Document.ContentStart.GetPositionAtOffset(match.Index + match.Length));
matchRange.ApplyPropertyValue(TextElement.ForegroundProperty, new SolidColorBrush(Colors.Red));
}
}
}
this.testBox.CaretPosition = tr.End;
}
|
|
|
|
|
Is there a way to generate a Deep Zoom image dynamically on demand, from a bunch of images contained on a web server, in a Silverlight application?
Say I have a list of 400 URLs to images that I get from a database, which vary based on user input, and I want to create a Deep Zoom image by stitching all those other images together in say a 20x20 grid (400 total). Is it possible to do this in Deep Zoom, or will I need to write my own implementation.
From what I've read of Deep Zoom this isn't possible, it's only good for displaying an image that was manually created (via Deep Zoom Composer) ahead of time, rather than on demand. But I obviously want to double check this before I go off and create my own 2D grid of elements, implement my own zoom via RenderTransform etc.
|
|
|
|
|
|
You can serve up your own tiles like DeepEarth does...the
tiles can also be created dynamically.
If you want to create a DeepZoom file like the composer does, the format
is documented:
Deep Zoom File Format[^]
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi,
Does anybody know if it is possible to add dynamically new lines or columns to a grid at runtime ?
Thanks,
Fred
|
|
|
|
|
You have to use code (c#) not XAML to do this.
Something along the lines of:
myGrid.ColumnDefinitions.Add(new ColumnDefintion);
|
|
|
|
|
Thanks. But how do you do to access to the Grid.Row field in C# ?
RowDefinition ligne_def = new RowDefinition();
ligne_def.Height = new GridLength(50);
Grille.RowDefinitions.Add(ligne_def);
Grille.RowDefinitions.Add(ligne_def);
Button bouton_new = new Button();
bouton_new.Content = "nouveau bouton";
// And how to access to the fields Grid.Row="" and Grid.Column="" ?
Grille.Children.Add(bouton_new);
For example :
|
|
|
|
|
WolveFred2 wrote: how do you do to access to the Grid.Row field in C# ?
Grid.SetRow(bouton_new, rowvalue);
Mark Salsbery
Microsoft MVP - Visual C++
modified on Thursday, January 29, 2009 1:52 PM
|
|
|
|
|
There is no SetRow() method on my Grid object.
<grid x:name="Grille" background="White" xmlns:x="#unknown">
I'm using Silverlight 2.0, without other plugins.
There is a SetValue() method (SetValue(DependencyProperty dp, object value)). It deals about System.Windows.DependencyObject. Would it be useful for my problem ?
|
|
|
|
|
Oops....sorry
Grid.SetRow(bouton_new, rowvalue);
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|