Laden...

Forenbeiträge von phlasher Ingesamt 13 Beiträge

13.02.2008 - 15:30 Uhr

Hi,

wenn ich das richtig sehe, ist das die Klasse aus der DLL, die du in dem Artikel runterladen kannst...

12.02.2008 - 14:25 Uhr

Habe ich befürchtet... 😉

Danke herbivore!

11.02.2008 - 17:44 Uhr

Hi,

wenn ich zwei halbtransparente Polygone so zeichne, dass sie sich überlappen, dann ergibt sich ja eine neue Farbe für die Schnittmenge...

Meine Frage: Kann ich diese neue Farbe irgendwie beeinflussen? Mein Ziel: Wenn zwei Polygone mit DERSELBEN Farbe (also ARGB stimmt überein) übereinander liegen, soll die Schnittmenge sich farblich genauso verhalten, wie die Nicht-Schnittmenge (und nicht dunkler werden)

Gruß,
phlasher

11.02.2008 - 13:14 Uhr

ja das stimmt schon, drucken darf ruhig auch mal ne ecke länger dauern... 😉

dachte aber, vielleicht gibt es ne bessere lösung...

trotzdem danke! 🙂

07.02.2008 - 12:52 Uhr

Hallo,

ich habe folgendes Problem: ich möchte eine riesige Anzahl an Polygonen drucken. Diese Polygone haben teilweise eine halbtransparente Füllung.

Wenn ich direkt in das Graphics-Object der PrintPageEventArgs zeichne, stelle ich nicht nachvollziehbare Fehler in der Darstellung der Transparenz fest:
teilweise lässt das "oberste" Polygon nur das "unterste" Polygon durchscheinen, aber nicht die Polygone die noch dazwischen liegen. An anderen Stellen, an denen exakt die gleiche Polygon-Struktur vorliegt, wird richtig gedruckt.
Ein anderer Fehler: eine große halbtransparente Fläche liegt über mehreren nebeneinander liegenden kleineren Polygonen -> manche dieser Polygone überdecken die darüberliegende Fläche, andere nicht...

Wenn ich diese Strukturen jedoch zuerst in ein Bitmap drucke und dann zum Drucker sende, wird alles korrekt gedruckt... Diese Möglichkeit bietet sich mir leider nicht, da ich die Grenzen der Bitmap-Size sprengen würde (ich drucke auf einem Plotter - und brauche teilweise Bitmaps mit über 20.000 Pixeln Breite)

Ist das eine Sache, die ich den Drucker-Treibern zuschreiben muss, oder gibt es da Ideen? Bin für jeden Vorschlag dankbar 🙂

03.07.2007 - 14:23 Uhr

Habe ich befürchtet...
Die Idee mit dem MemoryStream ist ganz clever, ich brauch die Dateigrößen-Vorhersage aber deshalb, weil ich sehr große Bilder speichern muss... daher wird sich das bei mir nicht anweden lassen. Also werde ich wohl irgendwie approximieren müssen 😕

Trotzdem vielen Dank! 🙂

03.07.2007 - 14:15 Uhr

Hallo alle.

Gibt es eine Möglichkeit, anhand von Höhe / Breite / PixelFormat eine Aussage über die Dateigröße zu treffen, wenn ich ein Bitmap mit der Save-Methode (als bmp oder als gif) speichere?

Über das Gif in Gdi+ habe ich jetzt gelesen, dass es (unter den normalen Bedingungen) mit 8bpp und einer Standardpalette von 256 Farben gespeichert wird. Aber auch die Rechnung Höhe * Breite * 1Byte führt mich nicht zum richtigen Ergebnis...

Ideen?

14.12.2006 - 14:56 Uhr

Der Vollständigkeit halber hier noch die DataGrid1_PreRender. Hier mache ich die Einrückung für die Zeilen (handelt sich ja um einen 3-stufigen Baum) und lasse einen LinkButton das Command der ButtonColumns ausführen: btnIcon.OnClientClick = ClientScript.GetPostBackClientHyperlink(button, "");


protected void DataGrid1_PreRender(object sender, EventArgs e)
    {
        int cnt = 0;
        foreach (DataGridItem item in DataGrid1.Items)
        {
            if (item.Visible)
            {
                int TreeChildNodes = Convert.ToInt16(item.Cells[5].Text);
                int TreeLevel = Convert.ToInt16(item.Cells[4].Text);

                if (TreeLevel == 0)
                {
                    item.BackColor = System.Drawing.Color.FromArgb(255, 255, 204);
                }
                else if (TreeLevel == 1)
                {
                    item.BackColor = System.Drawing.Color.FromArgb(255, 255, 240);
                }

                Button button = (Button)item.Cells[0].Controls[0];

                Label pad = new Label();
                for (int i = 0; i < TreeLevel; i++)
                {
                    pad.Text += "&nbsp;&nbsp;&nbsp;";
                }

                Label lblAGTitle = new Label();

                if (!item.Cells[3].Text.Equals("&nbsp;"))
                {
                    lblAGTitle.Text = "&nbsp;&nbsp;" + item.Cells[3].Text;
                }
                else
                {
                    lblAGTitle.Text = "&nbsp;&nbsp;" + item.Cells[6].Text;
                }

                LinkButton btnIcon = new LinkButton();

                if (TreeChildNodes > 0)
                {
                    btnIcon.Text = "<img src='" + button.Text + ".gif'>";
                    btnIcon.OnClientClick = ClientScript.GetPostBackClientHyperlink(button, "");
                }
                else
                {
                    btnIcon.Text = "<img src='arbeiter.gif' width='20px'>";
                    btnIcon.OnClientClick = "";
                }

                item.Cells[3].Controls.Add(pad);
                item.Cells[3].Controls.Add(btnIcon);
                item.Cells[3].Controls.Add(lblAGTitle);

                cnt++;
            }
        }
    }

14.12.2006 - 14:50 Uhr

Ausschnitt aus der Master.master:


<div>
<form id="form1" runat="server">
<asp:contentplaceholder id="content" runat="server">
</asp:contentplaceholder>
</form>
</div>

Die entsprechende SubForm:


<%@ Page MasterPageFile="~/MasterPage.master" CodeFile="~/EmployeesJobsOverview.aspx.cs" Language="C#" Inherits="EmployeesJobsOverview" Title="MIS - Auftrags-Übersicht" EnableEventValidation="false" %>

<asp:Content ID="EmployeesJobsContent" ContentPlaceHolderID="content" runat="server">
    
    <asp:Calendar ID="cal" runat="server" BackColor="White" BorderColor="#999999"
        CellPadding="4" DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt"
        ForeColor="Black" Height="180px" Width="200px" SelectedDate="2050-02-12" OnSelectionChanged="cal_SelectionChanged">
        <SelectedDayStyle BackColor="#666666" Font-Bold="True" ForeColor="White" />
        <TodayDayStyle BackColor="#CCCCCC" ForeColor="Black" />
        <SelectorStyle BackColor="#CCCCCC" />
        <WeekendDayStyle BackColor="#FFFFCC" />
        <OtherMonthDayStyle ForeColor="Gray" />
        <NextPrevStyle VerticalAlign="Bottom" />
        <DayHeaderStyle BackColor="#CCCCCC" Font-Bold="True" Font-Size="7pt" />
        <TitleStyle BackColor="#999999" BorderColor="Black" Font-Bold="True" />
    </asp:Calendar>
    <br />
    <asp:LinkButton ID="btnOpenAll" runat="server" OnClick="btnOpenAll_Click">Alle öffnen</asp:LinkButton>&nbsp;
    <asp:LinkButton ID="lbCloseAll" runat="server" OnClick="lbCloseAll_Click">Alle schließen</asp:LinkButton>
    <br />
    <br />
    <asp:DataGrid OnItemCommand="DataGrid1_ItemCommand" ID="DataGrid1" runat="server" CellPadding="10" ForeColor="Black" GridLines="None" AutoGenerateColumns="False" OnPreRender="DataGrid1_PreRender" BackColor="#CCCCCC" BorderColor="#999999" BorderStyle="Solid" BorderWidth="3px" CellSpacing="2" Font-Names="Verdana" Font-Size="Small">
        <FooterStyle BackColor="#CCCCCC" />
        <SelectedItemStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" Mode="NumericPages" />
        <ItemStyle BackColor="White" />
        <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
        <Columns>
            <asp:ButtonColumn Text="p" Visible="False" ButtonType="PushButton"></asp:ButtonColumn>
            <asp:BoundColumn DataField="RecordId" HeaderText="RecordId" Visible="False"></asp:BoundColumn>
            <asp:BoundColumn DataField="ParentId" HeaderText="ParentId" Visible="False"></asp:BoundColumn>
            <asp:BoundColumn DataField="Title" HeaderText="Auftrag"></asp:BoundColumn>
            <asp:BoundColumn DataField="TreeLevel" HeaderText="TreeLevel" Visible="False"></asp:BoundColumn>
            <asp:BoundColumn DataField="TreeChildNodes" HeaderText="TreeChildNodes" Visible="False">
            </asp:BoundColumn>
            <asp:BoundColumn DataField="ANr" HeaderText="ANr" Visible="False"></asp:BoundColumn>
            <asp:BoundColumn DataField="RNr" HeaderText="RNr"></asp:BoundColumn>
            <asp:BoundColumn DataField="Meldemenge" HeaderText="Meldemenge"></asp:BoundColumn>
            <asp:BoundColumn DataField="Ausschuss" HeaderText="Ausschuss"></asp:BoundColumn>
            <asp:BoundColumn DataField="TA" HeaderText="TA"></asp:BoundColumn>
        </Columns>
    </asp:DataGrid><br />
    

</asp:Content>

Es gibts also eigentlich nur eine Form, die um den Platzhalter in der MasterPage liegt...
aber danke schon mal für die Antwort, vielleicht kannste mit dem Code ja was anfangen 😉

13.12.2006 - 16:49 Uhr

Hi alle,

ich habe ein DataGrid mit einer Schaltflächenspalte (LinkButton) und einen im OnItemCommand zugewiesenen Handler dafür.
Bis gestern hatte ich auch noch gar kein Problem, da Firefox zuverlässig das ItemCommand feuert und den Code richtig ausführt.

Der Internet Explorer (v. 6 und 7) dagegen feuert das Event nur alle ca. 3-4 Klicks und ändert zwar serverseitig dann auch das Erforderliche (in diesem Fall: DataGridItems Visible machen und umgekehrt), aber das DataGrid ändert sich auf ClientSeite nicht im Geringsten....

Was muss ich denn (mal wieder!!!!) beim IE besonderes beachten, damit er sinnvoll arbeitet??

ViewState ist true, gefüllt wird das DataGrid nur im !PostBack... das ist die Umgebung, die ich auch gerne weiter benutzen würde...

Jemand eine Idee?

18.09.2006 - 14:57 Uhr

ok.
Das Setzen von AutoScrollMinSize feuert das SizeChanged-Event vom Panel, in dem ich die entsprechenden Null-Setzungen vornehme...
Seufz... hätt ich ja auch mal schneller drauf kommen können!!!! GRRRR! 😉

Danke trotzdem für die Hilfe!

<--> kann geclosed werden!

Gruß, phlasher

18.09.2006 - 13:48 Uhr

Original von herbivore
der einzige Weg, dass eine Variable null wird, ist sie (direkt oder indirekt) null zusetzen. Von alleine passiert das nicht.

ja gell, sollte so sein 😉

@ talla: _ZOOM hat einen Wert größer 1.0... dieser Wert ist ja dafür verantwortlich, dass die AutoScrollMinSize größer wird, als das Panel.. wenn also _ZOOM > 1.0 (und nicht = 1.0) ist, tritt dieses Verhalten auf.

Sorry, dass ich den Thread so lange habe liegen lassen, war ein paar Tage unterwegs...

Gruß, phlasher

12.09.2006 - 15:03 Uhr

Hallöchen...

in der Paint-Methode eines Panels mache ich folgendes: (_offscreen ist eine private Klassenvariable vom Typ Bitmap)


if (_offscreen == null)
{
    _offscreen = new Bitmap((int)Math.Round(pnlInfoContentPaintElement.Width * _ZOOM), (int)Math.Round(pnlInfoContentPaintElement.Height * _ZOOM));
    Graphics g = Graphics.FromImage(_offscreen);
    pnlInfoContentPaintElement.AutoScrollMinSize = new Size((int)Math.Round(SmashedBoundary.Width * _CurrentElementScale.Factor * _ZOOM), (int)Math.Round(SmashedBoundary.Height * _CurrentElementScale.Factor * _ZOOM));

...
...
}

Die Werte in der Zuweisung zu AutoScrollMinSize sind korrekt und es kommt eine sinnvolle Size dabei raus...
jedoch ist _offscreen direkt nach dieser Zuweisung wieder null!
Und zwar egal wann und wo ich diese Zuweisung mache... immer genau danach wird _offscreen wieder null... 8o
Und zwar immer genau dann, wenn AutoScrollMinSize tatsächlich größer ist, als das Panel, also wenn eig. Scrollbars angezeigt werden müssten...

finde ich sehr seltsam 😉

jemand ne Idee??