Diskuze: Visual Basic - Posun obrázku v PictureBoxu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 22 zpráv z 22.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Chceš jen nějaký nápad co k tomu budeš asi potřebovat nebo i kód?
public partial class Form1 : Form
{
private Image image;
private Point point;
private Point pointOnClickDown;
/// <summary>
/// indicates if image is rendered in realtime during shift
/// </summary>
bool realTimeShift = true;
bool isMousePressed;
public Form1()
{
InitializeComponent();
// panel which is used to draw image
Panel p = new Panel()
{
Width = 300,
Height = 300
};
// see http://stackoverflow.com/a/15815254
// prevents flickering
// its done by this way, because its access modification is protected
typeof(Panel).InvokeMember("DoubleBuffered",
BindingFlags.SetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
null, p, new object[] { true });
this.Controls.Add(p);
image = Image.FromFile("Untitled.png");
point = Point.Empty;
// draw image
p.Paint += (o, e) =>
{
Graphics g = e.Graphics;
//g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.AssumeLinear;
g.DrawImage(image, point);
};
p.MouseDown += (o, e) =>
{
// store starting position
pointOnClickDown = e.Location;
isMousePressed = true;
};
p.MouseUp += (o, e) =>
{
if (!realTimeShift)
{
// calculates difference between two points
Point shift = new Point(e.Location.X - pointOnClickDown.X, e.Location.Y - pointOnClickDown.Y);
// refresh position of image - shift it with some direction
point.Offset(shift);
// force refresh on panel
p.Invalidate();
}
isMousePressed = false;
};
p.MouseMove += (o, e) =>
{
if (realTimeShift && isMousePressed)
{
// calculates difference between two points
Point shift = new Point(e.Location.X - pointOnClickDown.X, e.Location.Y - pointOnClickDown.Y);
// refresh position of image - shift it with some direction
point.Offset(shift);
// store starting position
pointOnClickDown = e.Location;
// force refresh on panel
p.Invalidate();
}
};
}
}
Zjevně nevíš nic o práci s WinFormi, zkus se kouknout na zdejší návody, pak by ti to mělo být jasný kam to dát http://www.itnetwork.cz/…indows-forms
Ah, nevšiml sem si toho názvu... Si to dej do nějakého konverteru nebo popros Michal Žůrek - misaz, aby ti to přepsal
konvertor (dneska výjimečně funguje, to se mi už dlouho nestalo):
Public Partial Class Form1
Inherits Form
Private image As Image
Private point As Point
Private pointOnClickDown As Point
''' <summary>
''' indicates if image is rendered in realtime during shift
''' </summary>
Private realTimeShift As Boolean = True
Private isMousePressed As Boolean
Public Sub New()
InitializeComponent()
' panel which is used to draw image
Dim p As New Panel() With { _
Key .Width = 300, _
Key .Height = 300 _
}
' see http://stackoverflow.com/a/15815254
' prevents flickering
' its done by this way, because its access modification is protected
GetType(Panel).InvokeMember("DoubleBuffered", BindingFlags.SetProperty Or BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, p, New Object() {True})
Me.Controls.Add(p)
image = Image.FromFile("Untitled.png")
point = Point.Empty
' draw image
p.Paint += Function(o, e)
Dim g As Graphics = e.Graphics
'g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.AssumeLinear;
g.DrawImage(image, point)
End Function
p.MouseDown += Function(o, e)
' store starting position
pointOnClickDown = e.Location
isMousePressed = True
End Function
p.MouseUp += Function(o, e)
If Not realTimeShift Then
' calculates difference between two points
Dim shift As New Point(e.Location.X - pointOnClickDown.X, e.Location.Y - pointOnClickDown.Y)
' refresh position of image - shift it with some direction
point.Offset(shift)
' force refresh on panel
p.Invalidate()
End If
isMousePressed = False
End Function
p.MouseMove += Function(o, e)
If realTimeShift AndAlso isMousePressed Then
' calculates difference between two points
Dim shift As New Point(e.Location.X - pointOnClickDown.X, e.Location.Y - pointOnClickDown.Y)
' refresh position of image - shift it with some direction
point.Offset(shift)
' store starting position
pointOnClickDown = e.Location
' force refresh on panel
p.Invalidate()
End If
End Function
End Sub
End Class
Uvědom si, že jsi napsal na fórum, kde si radíme, neděláme tady práci za druhé. Kluci ti to celé napsali a ty si to ani nedokážeš vložit do projektu a ještě si stěžuješ? Jestli si chceš nechat napsat aplikaci, tak si zadej zakázku - http://www.itnetwork.cz/…-v-it/submit a zaplať si za to. Jestli chceš pomoct, tak ti pomůžeme rádi, ale budeš se muset snažit. A nás nezajímá že jsi grafik, to je jako by mi zedník zadarmo něco opravil protože sem programátor? Fakt se zamysli nad tím co pro tebe tady udělali a co jsi pro ně udělal ty.
Dostal jsi kompletní řešení ve dvou programovacích jazycích, třeba nějaké "děkuju"?
Kdybys klikl na odpovědět, tak by si toho třeba někdo všiml. Pořád to nemáš hotové?
nn nemám to hotové, proste to nejde
Zobrazeno 22 zpráv z 22.