返回首页

我用vb.net 2008设备专业版。请问vb.net 2008支持创建图表。 bcos我无法

NBSP水晶报表创建图表; [编辑]喊删除 - OriginalGriff [/编辑]

回答

评论会员:游客 时间:2012/02/06
vivek511:您可以尝试预定义的笔对象StartCap和端盖功能:"假如你要画的箭头从点Pnt1到Pnt2点:此代码到您的表单绘制一个漂亮的箭头:绘制一个简单的箭头,在VisualBasiccodeprelang="vb"objEnumspanclass="code-keyword"As/spanIDictionaryEnumerator-thedatafromwhichthegraphhasspanclass="code-keyword"to/spanbedrawn.intItemCountspanclass="code-keyword"As/spanspanclass="code-keyword"Integer/span-numberspanclass="code-keyword"of/spanitemsspanclass="code-keyword"to/spanshowspanclass="code-keyword"in/spanagraph(youcanspanclass="code-keyword"get/spanfromtheDictionaryEnumeratoritself).strGraphTitlespanclass="code-keyword"As/spanspanclass="code-keyword"String/span-titlehasspanclass="code-keyword"to/spanbedrawnspanclass="code-keyword"for/spanthegraph.Xaxisspanclass="code-keyword"As/spanspanclass="code-keyword"Integer/span-startingXaxis.Yaxisspanclass="code-keyword"As/spanspanclass="code-keyword"Integer/span-startingYaxis.MaxWidthspanclass="code-keyword"As/spanspanclass="code-SDKkeyword"Int16/span-maximumwidthspanclass="code-keyword"of/spanthegraph(spanclass="code-keyword"for/spancalculationpurpose).MaxHtspanclass="code-keyword"As/spanspanclass="code-SDKkeyword"Int16/span-maximumheightspanclass="code-keyword"of/spanthegraph(spanclass="code-keyword"for/spancalculationpurpose).clearFormspanclass="code-keyword"As/spanspanclass="code-keyword"Boolean/span-whethertheFormhasspanclass="code-keyword"to/spanclearspanclass="code-keyword"or/spanspanclass="code-keyword"not/span.spanclass="code-keyword"Optional/spanspanclass="code-keyword"ByVal/spanSpaceRequiredspanclass="code-keyword"As/spanspanclass="code-keyword"Boolean/span-whetherspacespanclass="code-keyword"is/spanrequiredspanclass="code-keyword"in/spanbetweenspanclass="code-digit"2/spangraphs. Thegraphhasspanclass="code-keyword"to/spanbecalledspanclass="code-keyword"in/spanthePaintspanclass="code-keyword"event/spanspanclass="code-keyword"of/spantheFormspanclass="code-keyword"and/spantheparametersshouldberesizedspanclass="code-keyword"in/spantheResizespanclass="code-keyword"event/spanspanclass="code-keyword"of/spantheForm. LoadColorArrayprocedurespanclass="code-keyword"is/spanusedspanclass="code-keyword"to/spanhaverequiredcolorsspanclass="code-keyword"to/spandrawthegraph.Because,spanclass="code-keyword"if/spanweuseRGB,overallthegraphwillspanclass="code-keyword"not/spanbegoodvisibly. TheparameterclearFormcanbeusedspanclass="code-keyword"when/spanyouneedspanclass="code-keyword"to/spanshowspanclass="code-digit"2/spangraphsspanclass="code-keyword"in/spanthesameForm;itwillbeusefulspanclass="code-keyword"then/span...Collapse|CopyCode spanclass="code-keyword"Public/spanspanclass="code-keyword"Sub/spandrawBarChart(spanclass="code-keyword"ByVal/spanobjEnumspanclass="code-keyword"As/spanIDictionaryEnumerator,_spanclass="code-keyword"ByVal/spanintItemCountspanclass="code-keyword"As/spanspanclass="code-keyword"Integer/span,spanclass="code-keyword"ByVal/spanstrGraphTitlespanclass="code-keyword"As/spanspanclass="code-keyword"String/span,_spanclass="code-keyword"ByVal/spanXaxisspanclass="code-keyword"As/spanspanclass="code-keyword"Integer/span,spanclass="code-keyword"ByVal/spanYaxisspanclass="code-keyword"As/spanspanclass="code-keyword"Integer/span,_spanclass="code-keyword"ByVal/spanMaxWidthspanclass="code-keyword"As/spanspanclass="code-SDKkeyword"Int16/span,spanclass="code-keyword"ByVal/spanMaxHtspanclass="code-keyword"As/spanspanclass="code-SDKkeyword"Int16/span,_spanclass="code-keyword"ByVal/spanclearFormspanclass="code-keyword"As/spanspanclass="code-keyword"Boolean/span,_spanclass="code-keyword"Optional/spanspanclass="code-keyword"ByVal/spanSpaceRequiredspanclass="code-keyword"As/spanspanclass="code-keyword"Boolean/span=spanclass="code-keyword"False/span) spanclass="code-keyword"Dim/spanintGraphXaxisspanclass="code-keyword"As/spanspanclass="code-keyword"Integer/span=Xaxisspanclass="code-keyword"Dim/spanintGraphYaxisspanclass="code-keyword"As/spanspanclass="code-keyword"Integer/span=Yaxisspanclass="code-keyword"Dim/spanintWidthMaxspanclass="code-keyword"As/spanspanclass="code-keyword"Integer/span=MaxWidthspanclass="code-keyword"Dim/spanintHeightMaxspanclass="code-keyword"As/spanspanclass="code-keyword"Integer/span=MaxHtspanclass="code-keyword"Dim/spanintSpaceHeightspanclass="code-keyword"As/spanspanclass="code-keyword"Integer/spanspanclass="code-keyword"Dim/spanintMaxValuespanclass="code-keyword"As/spanspanclass="code-keyword"Integer/span=spanclass="code-digit"0/spanspanclass="code-keyword"Dim/spanintCounterspanclass="code-keyword"As/spanspanclass="code-keyword"Integer/spanspanclass="code-keyword"Dim/spanintBarWidthMaxspanclass="code-keyword"Dim/spanintBarHeightspanclass="code-keyword"Dim/spanstrTextspanclass="code-keyword"As/spanspanclass="code-keyword"String/spanspanclass="code-keyword"Try/spanspanclass="code-keyword"Dim/spangrfxspanclass="code-keyword"As/spanGraphics=CreateGraphics()spanclass="code-keyword"If/spanclearForm=spanclass="code-keyword"True/spanspanclass="code-keyword"Then/spangrfx.Clear(BackColor)spanclass="code-keyword"End/spanspanclass="code-keyword"If/span grfx.DrawString(strGraphTitle,spanclass="code-keyword"New/spanFont(spanclass="code-string""/spanspanclass="code-string"VERDANA"/span,spanclass="code-digit"12/span.spanclass="code-digit"0/span,_FontStyle.Bold,GraphicsUnit.Point),_Brushes.DeepPink,intGraphXaxis+(intWidthMax/spanclass="code-digit"4/span),_(intGraphYaxis-intHeightMax)-spanclass="code-digit"40/span) spanclass="code-comment"'/spanspanclass="code-comment"GettheHeightoftheBar/spanintBarHeight=spanclass="code-keyword"CInt/span(intHeightMax/intItemCount) spanclass="code-comment"'/spanspanclass="code-comment"GetthespaceHeightoftheBar/spanintSpaceHeight=_spanclass="code-keyword"CInt/span((intHeightMax/(intItemCount-spanclass="code-digit"1/span))-intBarHeight) spanclass="code-comment"'/spanspanclass="code-comment"FindMaximumoftheinputvalue/spanspanclass="code-keyword"If/spanspanclass="code-keyword"Not/spanobjEnumspanclass="code-keyword"Is/spanspanclass="code-keyword"Nothing/spanspanclass="code-keyword"Then/spanspanclass="code-keyword"While/spanobjEnum.MoveNext=spanclass="code-keyword"True/spanspanclass="code-keyword"If/spanobjEnum.Value>intMaxValuespanclass="code-keyword"Then/spanintMaxValue=objEnum.Valuespanclass="code-keyword"End/spanspanclass="code-keyword"If/spanspanclass="code-keyword"End/spanspanclass="code-keyword"While/spanspanclass="code-keyword"End/spanspanclass="code-keyword"If/span spanclass="code-comment"'/spanspanclass="code-comment"GettheMaximumWidthoftheBar/spanintBarWidthMax=spanclass="code-keyword"CInt/span(intWidthMax/intMaxValue) spanclass="code-comment"'/spanspanclass="code-comment"ObtaintheGraphicsobjectexposedbytheForm./span spanclass="code-keyword"If/spanspanclass="code-keyword"Not/spanobjEnumspanclass="code-keyword"Is/spanspanclass="code-keyword"Nothing/spanspanclass="code-keyword"Then/spanintCounter=spanclass="code-digit"1/spanobjEnum.Reset()spanclass="code-comment"'/spanspanclass="code-comment"DrawXaxisandYaxislines/spangrfx.DrawLine(Pens.Black,intGraphXaxis,_intGraphYaxis,intGraphXaxis+intWidthMax,_intGraphYaxis)grfx.DrawLine(Pens.Black,intGraphXaxis,_intGraphYaxis,intGraphXaxis,_(intGraphYaxis-intHeightMax)-spanclass="code-digit"25/span) spanclass="code-keyword"While/spanobjEnum.MoveNext=spanclass="code-keyword"True/spanspanclass="code-comment"'/spanspanclass="code-comment"GetnewYaxis/spanintGraphYaxis=intGraphYaxis-intBarHeightspanclass="code-comment"'/spanspanclass="code-comment"DrawRectangle/spangrfx.DrawRectangle(Pens.Black,_spanclass="code-keyword"New/spanRectangle(intGraphXaxis,intGraphYaxis,_intBarWidthMax*objEnum.Value,intBarHeight))spanclass="code-comment"'/spanspanclass="code-comment"FillRectangle/spangrfx.FillRectangle(objColorArray(intCounter),_spanclass="code-keyword"New/spanRectangle(intGraphXaxis,intGraphYaxis,_intBarWidthMax*objEnum.Value,intBarHeight))spanclass="code-comment"'/spanspanclass="code-comment"DisplayTextandvalue/spanstrText=spanclass="code-string""/spanspanclass="code-string"("/span&objEnum.Key&spanclass="code-string""/spanspanclass="code-string","/span&objEnum.Value&spanclass="code-string""/spanspanclass="code-string")"/spangrfx.DrawString(strText,spanclass="code-keyword"New/spanFont(spanclass="code-string""/spanspanclass="code-string"VERDANA"/span,spanclass="code-digit"8/span.spanclass="code-digit"0/span,_FontStyle.Regular,GraphicsUnit.Point),_Brushes.Black,intGraphXaxis+_(intBarWidthMax*objEnum.Value),intGraphYaxis)intCounter+=spanclass="code-digit"1/spanspanclass="code-keyword"If/spanSpaceRequired=spanclass="code-keyword"True/spanspanclass="code-keyword"Then/spanintGraphYaxis=intGraphYaxis-intSpaceHeightspanclass="code-keyword"End/spanspanclass="code-keyword"If/spanspanclass="code-keyword"If/spanintCounter>objColorArray.GetUpperBound(spanclass="code-digit"0/span)spanclass="code-keyword"Then/spanintCounter=spanclass="code-digit"1/spanspanclass="code-keyword"End/spanspanclass="code-keyword"If/spanspanclass="code-keyword"End/spanspanclass="code-keyword"While/spanspanclass="code-keyword"If/spanclearForm=spanclass="code-keyword"True/spanspanclass="code-keyword"Then/spangrfx.Dispose()spanclass="code-keyword"End/spanspanclass="code-keyword"If/spanspanclass="code-keyword"End/spanspanclass="code-keyword"If/spanspanclass="code-keyword"Catch/spanexspanclass="code-keyword"As/spanExceptionspanclass="code-keyword"Throw/spanexspanclass="code-keyword"End/spanspanclass="code-keyword"Try/spanspanclass="code-keyword"End/spanspanclass="code-keyword"Sub/span/pre/code
安德烈Kraak:
objEnum As IDictionaryEnumerator - the data from which the graph has to be drawn.

    intItemCount As Integer - number of items to show in a graph (you can get from the DictionaryEnumerator itself).

    strGraphTitle As String - title has to be drawn for the graph.

    Xaxis As Integer - starting X axis.

    Yaxis As Integer - starting Y axis.

    MaxWidth As Int16 - maximum width of the graph (for calculation purpose).

    MaxHt As Int16 - maximum height of the graph (for calculation purpose).

    clearForm As Boolean - whether the Form has to clear or not.

    Optional ByVal SpaceRequired As Boolean - whether space is required in between 2 graphs. 

 

The graph has to be called in the Paint event of the Form and the parameters should be resized in the Resize event of the Form.

 

LoadColorArray procedure is used to have required colors to draw the graph. Because, if we use RGB, overall the graph will not be good visibly.

 

The parameter clearForm can be used when you need to show 2 graphs in the same Form; it will be useful then...

Collapse | Copy Code

 

Public Sub drawBarChart(ByVal objEnum As IDictionaryEnumerator, _

          ByVal intItemCount As Integer, ByVal strGraphTitle As String, _

          ByVal Xaxis As Integer, ByVal Yaxis As Integer, _

          ByVal MaxWidth As Int16, ByVal MaxHt As Int16, _

          ByVal clearForm As Boolean, _

          Optional ByVal SpaceRequired As Boolean = False)

 

    Dim intGraphXaxis As Integer = Xaxis

    Dim intGraphYaxis As Integer = Yaxis

    Dim intWidthMax As Integer = MaxWidth

    Dim intHeightMax As Integer = MaxHt

    Dim intSpaceHeight As Integer

    Dim intMaxValue As Integer = 0

    Dim intCounter As Integer

    Dim intBarWidthMax

    Dim intBarHeight

    Dim strText As String

    Try

        Dim grfx As Graphics = CreateGraphics()

        If clearForm = True Then

            grfx.Clear(BackColor)

        End If

 

        grfx.DrawString(strGraphTitle, New Font("VERDANA", 12.0, _

          FontStyle.Bold, GraphicsUnit.Point), _

          Brushes.DeepPink, intGraphXaxis + (intWidthMax / 4), _

          (intGraphYaxis - intHeightMax) - 40)

 

        'Get the Height of the Bar        



        intBarHeight = CInt(intHeightMax / intItemCount)

 

        'Get the space Height of the Bar 



        intSpaceHeight = _

          CInt((intHeightMax / (intItemCount - 1)) - intBarHeight)

 

        'Find Maximum of the input value



        If Not objEnum Is Nothing Then

            While objEnum.MoveNext = True

                If objEnum.Value > intMaxValue Then

                    intMaxValue = objEnum.Value

                End If

            End While

        End If

 

        'Get the Maximum Width of the Bar



        intBarWidthMax = CInt(intWidthMax / intMaxValue)

 

        ' Obtain the Graphics object exposed by the Form.



 

        If Not objEnum Is Nothing Then

            intCounter = 1

            objEnum.Reset()

            'Draw X axis and Y axis lines



            grfx.DrawLine(Pens.Black, intGraphXaxis, _

              intGraphYaxis, intGraphXaxis + intWidthMax, _

              intGraphYaxis)

            grfx.DrawLine(Pens.Black, intGraphXaxis, _

              intGraphYaxis, intGraphXaxis, _

              (intGraphYaxis - intHeightMax) - 25)

 

            While objEnum.MoveNext = True

                'Get new Y axis



                intGraphYaxis = intGraphYaxis - intBarHeight

                'Draw Rectangle



                grfx.DrawRectangle(Pens.Black, _

                  New Rectangle(intGraphXaxis, intGraphYaxis, _

                  intBarWidthMax * objEnum.Value, intBarHeight))

                'Fill Rectangle



                grfx.FillRectangle(objColorArray(intCounter), _

                  New Rectangle(intGraphXaxis, intGraphYaxis, _

                  intBarWidthMax * objEnum.Value, intBarHeight))

                'Display Text and value



                strText = "(" & objEnum.Key & "," & objEnum.Value & ")"

                grfx.DrawString(strText, New Font("VERDANA", 8.0, _

                  FontStyle.Regular, GraphicsUnit.Point), _

                  Brushes.Black, intGraphXaxis + _

                  (intBarWidthMax * objEnum.Value), intGraphYaxis)

                intCounter += 1

                If SpaceRequired = True Then

                    intGraphYaxis = intGraphYaxis - intSpaceHeight

                End If

                If intCounter > objColorArray.GetUpperBound(0) Then

                    intCounter = 1

                End If

            End While

            If clearForm = True Then

                grfx.Dispose()

            End If

        End If

    Catch ex As Exception

        Throw ex

    End Try

End Sub
评论会员:vivek511 时间:2012/02/06
最好的人问这是文章的作者
您可以张贴一个问题:在文章页面的底部,] |安德烈Kraak:您好,

这是很容易,当您按一下按钮出口,火:

GridView1.MasterTableView.ExportToWord;

e.g:

{体C3}