I have a Problem
Click the minimize button, then click the maximize button, list item is not displayed.
p1.jpg is normal .
p2 is click the minize button .
help me!
thanks!!!
Click the minimize button, then click the maximize button, list item is not displayed.
p1.jpg is normal .
p2 is click the minize button .
private
void
Form1_Load(
object
sender, EventArgs e)
{
this
.radListView1.ItemSize =
new
Size(200, 300);
this
.radListView1.AllowArbitraryItemHeight =
true
;
this
.radListView1.ItemSpacing = 5;
this
.radListView1.EnableKineticScrolling =
false
;
this
.radListView1.ListViewElement.ViewElement.ViewElement.Margin =
new
Padding(1, 1, 0, 0);
this
.radListView1.ListViewElement.ViewElement.Orientation = Orientation.Vertical;
this
.radListView1.AllowEdit =
false
;
this
.radListView1.Width = 210;
for
(
int
i = 0; i < 5; i++)
{
ListViewDataItem t =
new
ListViewDataItem();
t.Tag =
new
string
[] {
"Name "
+ i.ToString(),
"23"
,
"uiui"
};
this
.radListView1.Items.Add(t);
}
}
private
void
radListView1_VisualItemCreating(
object
sender, ListViewVisualItemCreatingEventArgs e)
{
e.VisualItem =
new
CustomVisualItem();
}
namespace
TestListView
{
internal
class
CustomVisualItem : IconListViewVisualItem
{
private
LightVisualElement imageElement;
private
LightVisualElement titleElement;
private
LightVisualElement artistElement;
private
StackLayoutPanel stackLayout;
// the base image of the radar
// this saves time/cycles, b/c we only have to draw the
// background of the radar once (and update it as necessary)
Image _baseImage;
// the final rendered image of the radar
Image _outputImage;
// the azimuth of the radar
int
_az = 0;
// some internally used points for drawing the fade
// of the radar scanline
PointF _pt =
new
PointF(0F, 0F);
PointF _pt2 =
new
PointF(1F, 1F);
PointF _pt3 =
new
PointF(2F, 2F);
Color _topColor = Color.FromArgb(0, 120, 0);
Color _bottomColor = Color.FromArgb(0, 40, 0);
Color _lineColor = Color.FromArgb(0, 255, 0);
int
_size = 200;
private
Timer _timer;
// do draw the scanline or not to draw the scanline?
bool
_scanLine =
false
;
public
CustomVisualItem()
{
_timer =
new
Timer();
_timer.Tick +=
new
EventHandler(_timer_Tick);
// _timer.Interval = 40;
_timer.Interval = 625;
CreateBaseImage();
DrawScanLine =
false
;
Draw();
_timer.Enabled =
false
;
}
public
PointF AzEl2XY(
int
azimuth,
int
elevation)
{
// rotate coords... 90deg W = 180deg trig
double
angle = (270d + (
double
)azimuth);
// turn into radians
angle *= 0.0174532925d;
double
r, x, y;
// determine the lngth of the radius
r = (
double
)_size * 0.5d;
r -= (r * (
double
)elevation / 90);
x = (((
double
)_size * 0.5d) + (r * Math.Cos(angle)));
y = (((
double
)_size * 0.5d) + (r * Math.Sin(angle)));
return
new
PointF((
float
)x, (
float
)y);
}
void
_timer_Tick(
object
sender, EventArgs e)
{
// increment the azimuth
if
(DrawScanLine)
{
_az++;
// reset the azimuth if needed
// if not, this will cause an OverflowException
if
(_az >=360)
{
_az = 0;
DrawScanLine =
false
;
}
// update the fade path coordinates
_pt = AzEl2XY(_az, 0);
_pt2 = AzEl2XY(_az - 20, 0);
_pt3 = AzEl2XY(_az - 10, -10);
// redraw the output image
Draw();
}
}
public
bool
DrawScanLine
{
get
{
return
_scanLine;
}
set
{
_scanLine = value;
}
}
private
void
CreateBaseImage()
{
// create the drawing objects
Image i =
new
Bitmap(_size, _size);
Graphics g = Graphics.FromImage(i);
Pen p =
new
Pen(_lineColor);
// set a couple of graphics properties to make the
// output image look nice
g.CompositingQuality = CompositingQuality.HighQuality;
g.InterpolationMode = InterpolationMode.Bicubic;
g.SmoothingMode = SmoothingMode.AntiAlias;
// draw the background of the radar
g.FillEllipse(
new
LinearGradientBrush(
new
Point((
int
)(_size / 2), 0),
new
Point((
int
)(_size / 2), _size - 1), _topColor, _bottomColor), 0, 0, _size - 1, _size - 1);
// release the graphics object
g.Dispose();
// update the base image
_baseImage = i;
}
/// <summary>
/// Draws the output image and fire the event caller for ImageUpdate
/// </summary>
void
Draw()
{
// create a copy of the base image to draw on
Image i = (Image)_baseImage.Clone();
// create the circular path for clipping the output
Graphics g = Graphics.FromImage(i);
GraphicsPath path =
new
GraphicsPath();
path.FillMode = FillMode.Winding;
path.AddEllipse(-1F, -1F, (
float
)(_size + 1), (
float
)(_size + 1));
g.Clip =
new
Region(path);
g.CompositingQuality = CompositingQuality.HighQuality;
g.InterpolationMode = InterpolationMode.Bicubic;
g.SmoothingMode = SmoothingMode.AntiAlias;
g.Dispose();
_outputImage = i;
this
.imageElement.Image = _outputImage;
}
protected
override
void
CreateChildElements()
{
base
.CreateChildElements();
stackLayout =
new
StackLayoutPanel();
stackLayout.Orientation = System.Windows.Forms.Orientation.Vertical;
imageElement =
new
LightVisualElement();
imageElement.DrawText =
false
;
imageElement.ImageLayout = System.Windows.Forms.ImageLayout.Zoom;
imageElement.StretchVertically =
false
;
imageElement.Margin =
new
System.Windows.Forms.Padding(10, 5, 10, 5);
stackLayout.Children.Add(imageElement);
titleElement =
new
LightVisualElement();
titleElement.TextAlignment = ContentAlignment.MiddleLeft;
titleElement.Margin =
new
Padding(10, 5, 10, 5);
titleElement.Font =
new
System.Drawing.Font(
"Segoe UI"
, 12, FontStyle.Bold, GraphicsUnit.Point);
titleElement.Text =
"0"
;
stackLayout.Children.Add(titleElement);
artistElement =
new
LightVisualElement();
artistElement.TextAlignment = ContentAlignment.MiddleLeft;
artistElement.Margin =
new
Padding(10, 5, 10, 5);
artistElement.Font =
new
System.Drawing.Font(
"Segoe UI"
, 9, FontStyle.Bold | FontStyle.Italic,GraphicsUnit.Point);
artistElement.ForeColor = Color.FromArgb(255, 114, 118, 125);
stackLayout.Children.Add(artistElement);
this
.Children.Add(stackLayout);
this
.Padding =
new
Padding(5);
this
.Shape =
new
RoundRectShape(3);
this
.BorderColor = Color.FromArgb(255, 110, 153, 210);
this
.BorderGradientStyle = GradientStyles.Solid;
this
.DrawBorder =
true
;
this
.DrawFill =
true
;
this
.BackColor = Color.FromArgb(255, 230, 238, 254);
this
.GradientStyle = GradientStyles.Solid;
}
protected
override
void
SynchronizeProperties()
{
this
.imageElement.Image = _outputImage;
this
.titleElement.Text = Convert.ToString(((
string
[])
this
.Data.Tag)[0]);
}
protected
override
SizeF MeasureOverride(SizeF availableSize)
{
SizeF measuredSize =
base
.MeasureOverride(availableSize);
this
.stackLayout.Measure(measuredSize);
return
measuredSize;
}
protected
override
SizeF ArrangeOverride(SizeF finalSize)
{
base
.ArrangeOverride(finalSize);
this
.stackLayout.Arrange(
new
RectangleF(PointF.Empty, finalSize));
return
finalSize;
}
}
}
help me!
thanks!!!