Private Sub AddBalloonCallout(ByVal activeView As IActiveView)
Dim pTextElement As ITextElement
Dim pElement As IElement
Dim pPoint As IPoint
Dim pCallout As ICallout
Dim pTextSymbol As IFormattedTextSymbol
Dim pGraphicsContainer As IGraphicsContainer
Dim midX As Double, midY As Double
'Create a new text element
pTextElement = New TextElement
pElement = CType(pTextElement, IElement) 'QI
pTextElement.Text = "Text callout" & vbCrLf & "In the middle of the screen"
'Position the new element on the active view's center point
midX = (activeView.Extent.XMax + activeView.Extent.XMin) / 2
midY = (activeView.Extent.YMax + activeView.Extent.YMin) / 2
pPoint = New Point
pPoint.PutCoords(midX, midY)
pElement.Geometry = pPoint
'Set the text element symbology to a default balloon callout
pTextSymbol = New TextSymbol
pCallout = New BalloonCallout
pTextSymbol.Background = CType(pCallout, ITextBackground)
'Use this formula to get a callout anchor point location
pPoint.PutCoords(midX - activeView.Extent.Width / 4, midY + activeView.Extent.Width / 20)
pCallout.AnchorPoint = pPoint
pTextElement.Symbol = pTextSymbol
'Add the element to the active view, either the focus Map or PageLayout
pGraphicsContainer = CType(activeView, IGraphicsContainer)
pGraphicsContainer.AddElement(pElement, 0)
pElement.Activate(activeView.ScreenDisplay)
'Flag the area of the new element for refreshing
activeView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, pElement, Nothing)
End Sub
Saturday, September 11, 2010
Balloon Callout i ArcGIS Engine.
Wednesday, August 25, 2010
Skapat verktyg med IDisplayFeedback.
Private m_polygonFeedback As INewPolygonFeedback
Private m_screenDisplay As IScreenDisplay
Private m_hookHelper As IHookHelper
Public Overrides Sub OnCreate(ByVal hook As Object)
If (m_hookHelper Is Nothing) Then m_hookHelper = New HookHelperClass
If Not hook Is Nothing Then
m_hookHelper.Hook = hook
End If
End Sub
Public Overrides Sub OnClick()
m_screenDisplay = m_hookHelper.ActiveView.ScreenDisplay
End Sub
Public Overrides Sub OnDblClick()
Dim polygon As IPolygon = m_polygonFeedback.Stop()
MsgBox("Area: " & CType(polygon, IArea).Area)
m_polygonFeedback = Nothing
End Sub
Public Overrides Sub OnMouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Integer, ByVal Y As Integer)
If Button = 1 Then
Dim cursorPoint As ESRI.ArcGIS.Geometry.IPoint = m_screenDisplay.DisplayTransformation.ToMapPoint(X, Y)
If m_polygonFeedback Is Nothing Then
m_polygonFeedback = New NewPolygonFeedbackClass()
m_polygonFeedback.Display = m_screenDisplay
m_polygonFeedback.Start(cursorPoint)
Else
m_polygonFeedback.AddPoint(cursorPoint)
End If
End If
End Sub
Public Overrides Sub OnMouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Integer, ByVal Y As Integer)
If Not m_polygonFeedback Is Nothing Then
Dim cursorPoint As ESRI.ArcGIS.Geometry.IPoint = m_screenDisplay.DisplayTransformation.ToMapPoint(X, Y)
m_polygonFeedback.MoveTo(cursorPoint)
End If
End Sub
Thursday, May 27, 2010
Run VS as administrator.
och "Advanced" och klicka i "run as admininstrator"
så startas VS alltid med administrator rättigheter.
Wednesday, May 05, 2010
Slå ihop PDF filer med iTextSharp.
Testade att skapa en applikation för att slå ihop två PDF:er och använde iText# som vi använder i andra projekt och utnyttjade ett exempel som jag hittade på nätet: http://khsw.blogspot.com/2006/04/merge-pdf-files-using-itextsharp.html gjorde enklast möjliga kod:
Dim destination As String = "c:\\testPDF.pdf"
Dim source As List(Of String) = New List(Of String)
source.Add("c:\\1.pdf")
source.Add("c:\\2.pdf")
PdfMerge.MergeFiles(destination, source.ToArray())
Fungerar hur bra som helst!
Saturday, April 17, 2010
Public Resource.resx
Byt från ResXCodeFileGenerator till PublicResXFileCodeGenerator så får man en resurs klass som är public.
Saturday, February 20, 2010
Combobox i verktygsfält i ArcGIS Engine eller implementera IToolControl.
Men ibland så vill man ju ibland göra lite mer avancerade saker. T.ex så kan man vara i behov av att lägga in en combobox i verktygsfältet. För att få det att fungera så krävs det lite mer kodning, man måste implementerar interfacet ICommand eller ITool (ifall man vill ha ett verktyg med tillgång till displayen) istället för basklasserna. Samt ärva från en System.Windows.Form.Combobox. Utöver detta så krävs det även att man implementerar interfacet IToolControl se http://resources.esri.com/help/9.3/ArcGISEngine/arcobjects/esrisystemui/itoolcontrol.htm. Esri beskriver här hur man måste göra för att knyta kontrollen till verktygsfältet. Handle referensen till comboboxen måste exponeras vid implemenation av interfacet.
Thursday, November 19, 2009
Spara "sessionsvariabler" i WCF.
I ASP.Net så är det lätt att spara undan variabler i en session genom att spara i den collection som finns t.ex i Page objektet:
page.Session["SessionID"] = session.ToString();
Men i WCF är det inte lika lätt att se hur man sparar undan variabler. Detta beror till stor del på att WCF är gjort för att vara mer generellt och klara olika typer av underliggande tekniker. Man får läsa på en del innan man förstår hur det hänger ihop, här finns en bra beskrivning av InstanceContextMode:
http://msdn.microsoft.com/en-us/magazine/cc163590.aspx
Lösningen på problemet fann jag här: http://blogs.msdn.com/drnick/archive/2007/02/15/stashing-data-in-extensible-objects.aspx genom att skapa ett ExtensionObjekt som lagras på InstanceContext så uppnådde jag samma funktionalitet som tidigare i ASP.Net, dvs sessionsvariablen lever under anropets tid.
if (OperationContext.Current.InstanceContext.Extensions.Find
{
OperationContext.Current.InstanceContext.Extensions.Add(new SessionMessageInstanceContext());
}
OperationContext.Current.InstanceContext.Extensions.Find
Saturday, October 10, 2009
Introduktion till .Net 4.0
Oj, oj nu blev det tätt mellan blogginläggen men jag har även kollat på denna presentation som jag tycker var bra: http://www.msdev.com/Directory/Description.aspx?eventId=1271
Installation
Side-by-side, fungerar med tidigare versioner.
Dynamiska språk
IronPython, IronRuby, Nytt i .Net 4.0 är Dynamic Language Runtime, Ligger som ett lager ovan på CLR
C#
Named parameters
- Lägga parametrar i olika ordning
- Default värde
- Optional parameters
VB.Net
Multi-line Lambda
F#
Nytt språk, som kommer. Funktionellt språk som innebär att man beskriver vad man ska gör i större grad än hur man vill att datorn ska exekvera. Ett steg längre ifrån hårdvaran.
MEF
Plug-In ramverk för Applikationer
- Attribut för Import, Export
- CompositionContainer, Catalog
- System.System.CompositionModel.Composition för Hosting
Threads
- CountDown Events
- Barriers
- Ger möjlighet att vänta in delprocesser
CodeContract
Assert i all ära men här kommer det som chefen vill att man ska göra, dvs beskriva vad gränssnitten stöder och på så sätt få bättre kvalité på koden.
- System.Diagnostics.contracts
- PreConditions
- PostConditions
- Invariants
.Net 4.0 och Visual Studio 2010.
Fokus på att läsa och hitta i kod:
- Markerar parametrar, så "highlightas" parametrarna i koden.
- intellisence, sökbar med regexp, behöver inte vara objekt namn eller metod namn... Sök på en del av ett metodnamn så kommer namnen som matchas upp. Fungerar även med camelCase,dvs heter metoden GetParameterValue så går det att söka på GPV.
- Ctrl - Shift - I, snabb sökning. Visar alla ställen i koden då
- Call Hirarchy. Visar varifrån en metod anropas.
Debug History
- Möjlighet att gå tillbaka och se värden på variabler mm.
- Göra en dump av debug history i felhanteringen, och på så sätt få tillbaka läget som kunden eller testaren hade vid fel tillfället! Detta borde vara alla utvecklares våta dröm :)
web platform installer
- Förenklar deployment av web komponenter
- http://www.microsoft.com/web/
IIS SEO Toolkit
- Produkt för att kolla upp felaktigheter i dina siter som gör att du hamnar lågt i sökmotorerna sökningar.
- http://www.iis.net/extensions/SEOToolkit
- Installeras på en klient så man bheöver inte skräpa ned servern.
- Fungerade både mot IIS6 och IIS7.
Customized config
VS2010 skapar som standardmässigt två anpassade configfiler Debug och Release (Ifall man valt att skapa projekt för 4.0). dessa innehåller kod för förändringar som krävs av web.config till Debug resp Release så har man conscction parametrar mm i web configen så får man ett ställ där man kan byta ut dessa. Tidigare han man varit tvungen att hacka detta i msbuild eller ha olika configfiler som länkats med i bygget.
Thursday, September 17, 2009
F# funktionellt språk från Microsoft.
Tuesday, August 18, 2009
Replikering av geodatabase i ArcSDE.
http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=Understanding_distributed_data
Verkar finnas några om och men som är viktiga att komma ihåg att man måste ha en ArcSDE som parent och child om det ska gå att sätta upp en en- och tvåvägs-replikering, annars så fungerar det bara att ha en checkout replikering. Sen trycker dom på att man ska ha koll på sitt senario gång på gång i texten, så jag antar att det kan bli struligt om man vill byta replikeringsmetod i efterhand.
Har även kollat upp hur man i ArcObjects kan trigga igång en synkronisering och det verkar vara busenkelt: http://resources.esri.com/help/9.3/ArcGISDesktop/dotnet/8280cca2-b4cf-4d37-8b28-4ee02aaf37e5.htm