Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Tut] Jak zrobić sygnaturę w ASP.NET


Propagandhi

Rekomendowane odpowiedzi

Opublikowano

Nie mam spania, więc zmontowałem kolejną sygnaturkę. W dużym skrócie ASP.NET, to takie konkurencyjne dla PHP środowisko do tworzenia złożonych aplikacji internetowych z wykorzystaniem języków platformy .NET (C#, VB.NET). Najtrudniej z tego wszystkiego było znaleźć darmowy serwer z obsługą ASP (większość jest na linuxie do obsługi PHP). Znalazłem jednak coś takiego i założyłem darmowe konto całkiem szybko: aspweb.cz.

Do tworzenia witryn z ASP.NET bardzo fajnym narzędziem jest Visual Web Developer , ale nam wystarczy niezastąpiony windowsowy notatnik.

 

Na serwer z obsługą ASP.NET musimy wrzucić trzy pliki: graficzny podkład pod sygnaturę, naszą stronę w pliku *.aspx i "silnik" sygnatury w *.cs. Silnik może być też w pliku *.vb, jeśli piszemy w VB.NET (trzeba to później jeszcze uwzględnić w *.aspx). Nie wszystkie serwery kompilują te pliki w locie, także może się okazać, że zamiast cs lub vb trzeba wrzucić skompilowaną dll'kę.

 

Gotowa sygna wygląda tak (może się chwile ładować):

 

przekierowanie.png

 

- podkład graficzny:

Posklejałem z różnych grafik z sieci i trochę pobawiłem się w Paint Shop Pro ze zrobieniem tego panelu po prawej i tła.

Podkład wygląda tak:

 

syg2.png

 

Na to nałożymy tekst ze statystykami i gif z rangą.

 

- plik *.cs

Mój akurat nazywa się sygnatura5.aspx.cs. Tu jest cały kod, który pobiera sobie statystyki:

 

using System;
using System.Net;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Collections.Generic;
using System.Text;

namespace sygnatura
{
public partial class _Default : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{
	String SciezkaRoota = Server.MapPath("~");
MemoryStream MemStream = new MemoryStream();
System.Drawing.Image pic = System.Drawing.Image.FromFile("d:\\dzhosts\\localuser\\t3r1k4\\www.propagandhi.somee.com\\syg.png");
Graphics g = Graphics.FromImage(pic);

// kolorki (czcionka)
SolidBrush TextBrush = new SolidBrush(Color.FromArgb(255, 255, 255,204));
SolidBrush TextBrush2 = new SolidBrush(Color.Bisque);

g.SmoothingMode = SmoothingMode.AntiAlias;
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

//odczyt statystyk ze strony
string adres = "http://combatarms.nexoneu.com/Modules/Community/Profile/Profile.aspx?NickName=twoj_nick";

	// string result = null;
WebResponse response = null;
StreamReader reader = null;
List<string> linie = new List<string>();

try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(adres);
request.Method = "GET";
response = request.GetResponse();
reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);//Encoding.UTF8


string linia;
while ((linia = reader.ReadLine()) != null)
{
linie.Add(linia);
}

//result = reader.ReadToEnd();
}

catch (Exception ex)
{
g.DrawString("Błąd: " + ex.Message, new Font("verdana", 14, FontStyle.Bold), TextBrush, new PointF(200, 100));
}

finally
{
if (reader != null)
reader.Close();
if (response != null)
response.Close();
}


//wspolczynnik k/d
string wspKD = linie[65];
string[] separatory = {"<dd>", "</dd>"};
StringSplitOptions opcje = new StringSplitOptions();
string[] tabkd = wspKD.Split(separatory,3,opcje);
string wspKDwyn = tabkd[1]; 

//doswiadczenie
string wspDOS = linie[67];
string[] tabdos = wspDOS.Split(separatory, 3, opcje);
string wspDOSwyn = tabdos[1];

//ranking
string wspRAN = linie[63];
string[] tabran = wspRAN.Split(separatory, 3, opcje);
string wspRANwyn = tabran[1];

//klan
string klan = linie[78];
string[] tabklan = klan.Split(separatory, 3, opcje);
string klanwyn = tabklan[1]; 

//mecze
string mecze = linie[99];
string[] separatory2 = { "<span>", "</span>" };
string[] tabmecze= mecze.Split(separatory2, 3, opcje);
string meczewyn = tabmecze[1]; 

//ranga (obrazek)
string ranga = linie[59];
string[] separatory3 = { "<span class=\"level\"><img src=\"", "\" alt='rank_" };
string[] tabranga = ranga.Split(separatory3, 3, opcje);
string rangawyn = tabranga[1];

WebClient obrazek = new WebClient();
Stream obrazekSTR = obrazek.OpenRead(rangawyn);

System.Drawing.Image rangapic = System.Drawing.Image.FromStream(obrazekSTR,true, true);

Point pozRan = new Point();
pozRan.X = 550;
pozRan.Y = 30;
g.DrawImage(rangapic, 550,20,31,21); //gif z rangą

	//rysujemy
g.DrawString("twoj_nick", new Font("verdana", 14, FontStyle.Bold), TextBrush2, new PointF(410, 15));
g.DrawString("Klan: " + klanwyn, new Font("verdana", 14, FontStyle.Bold), TextBrush, new PointF(410, 35));
g.DrawString("K/D ratio: " + wspKDwyn, new Font("verdana", 14, FontStyle.Bold), TextBrush, new PointF(410, 50));
g.DrawString("Ranking: " + wspRANwyn, new Font("verdana", 14, FontStyle.Bold), TextBrush, new PointF(410, 65));
g.DrawString("EXP: " + wspDOSwyn, new Font("verdana", 14, FontStyle.Bold), TextBrush, new PointF(410, 80));
g.DrawString("Mecze: " + meczewyn, new Font("verdana", 14, FontStyle.Bold), TextBrush, new PointF(410, 95));

Response.ContentType = "image/png";

pic.Save(MemStream, ImageFormat.Png);
MemStream.WriteTo(Response.OutputStream);

pic.Dispose();
}
}
}

 

Z rzeczy, które musicie zmienić:

 

System.Drawing.Image pic = System.Drawing.Image.FromFile(SciezkaRoota + "//syg.png");

 

syg.png, to nazwa podkładu. Zmienna SciezkaRoota odwołuje się do głównego katalogu na serwerze. Jak byście mieli jakies problemy z tą ścieżką to dajcie znać.

 

g.DrawString("twoj_nick", new Font("verdana", 14, FontStyle.Bold), TextBrush2, new PointF(410, 15));

 

Nick do zmiany. Nie pobieram go automatycznie, bo to akurat w grze jest stały.

 

string adres = "http://combatarms.nexoneu.com/Modules/Community/Profile/Profile.aspx?NickName=twoj_nick";

Znów nick.

 

I chyba tyle. Z możliwych do edycji rzeczy, to np czcionka i jej kolor: g.DrawString("twoj_nick", new Font("verdana", 14, FontStyle.Bold), TextBrush2, new PointF(410, 15));

gdzie TextBrush to kolor zdefiniowany tak : SolidBrush TextBrush = new SolidBrush(Color.FromArgb(255, 255, 255,204));

Pierwsza liczba oznacza przezroczystość, pozostałe kolor w RGB.

 

- plik *.aspx

 

Tutaj tylko jedna linijka, ale pojawia sie odwołanie do pliku *.cs, także poprawcie nazwę jeśli macie inną:

 

<%@ Page Language="C#" Debug="true" src="sygnatura5.aspx.cs" Inherits="sygnatura._Default" %>

I to wszystko. Jak wrzucicie wszystko na serwer i odpalicie plik aspx, to powinna sie ukazać sygnatura. Dla nieco bardziej ogarniętych, którzy mieliby jakieś problemy do debuggowania potrzebny jest jeszcze plik Web.Config o takiej zawartości:

 

<!-- Web.Config Configuration File -->

<configuration>
<system.web>
	<compilation debug="true"/>
<customErrors mode="Off"/>
</system.web>
</configuration>

- przekierowywanie w PHP

 

Ok, mamy sygne, ale nie da się jej wrzucić na to forum, bo musi mieć rozszerzenie w gif, jpg, albo png. Da się to prosto obejśc z użyciem php. Jeśli macie konto www z obsługą php i możliwością edytowania pliku .htaccess, to możemy zapisać skrypt przekierowujący do sygnatury w aspx:

 

 

<?php
$URL="http://propagandhi.somee.com/sygnatura5.aspx";
header ("Location: $URL");
?>

 

To zapiszcie do pliku *.png i wrzućcie na serwer. Potem na forum zamiast linku do sygny w aspx wklejacie link do tego skryptu zapisanego jako png. W katalogu z plikiem skryptu przekierowującego musi być plik .htaccess z taką instrukcja w środku:

AddType application/x-httpd-php .png AddType application/x-httpd-php .jpg AddType application/x-httpd-php .gif

Nie mam talentu do pisania takich rzeczy, ale mam nadzięje, że było w miare jasne dla wszystkich.

 

Edit: Mała poprawka z

 

string[] separatory3 = { "<span class=\"level\"><img src=\"", "\" alt='rank_10'" };

 

na

 

string[] separatory3 = { "<span class=\"level\"><img src=\"", "\" alt='rank_" };

 

Zauważyłem błąd dopiero, jak zmieniła mi się ranga w grze :-P

  • 9 miesięcy temu...
  • 1 rok później...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...